Tenemos una producción relativamente grande basada en postgres db: ~ 20GB. La base de datos PostgreSQL está alojada en heroku.
Me gustaría copiar un pequeño subconjunto de los datos de la tabla a mi base de datos local para poder ejecutar algunas pruebas en ellos sin tener que trabajar en la producción.
No quiero generar datos de muestra yo mismo, sino utilizar los datos que ya existen en el entorno de producción.
~ 100 filas de cada tabla en la base de datos serían suficientes. ¿Hay una manera fácil de lograr esto?
postgresql
heroku
jottr
fuente
fuente
Respuestas:
No he usado esta herramienta, pero Jailer promete hacer exactamente eso.
http://sourceforge.net/projects/jailer/
fuente
El carcelero puede ayudar en esta situación. Estoy trabajando en el mismo que el suyo (tratando de obtener ~ 100 registros de cada tabla) y estos son los pasos que hice: - Busque la entidad raíz (la que está asociada con casi tablas) y obtenga un subconjunto de los registros de un fila raíz (por ejemplo, la raíz es personas, luego buscaré todos los registros relacionados con people.id = 1 ...) - Después de finalizar el paso 1, comience nuevamente con otra tabla (la que le gustaría tener 100 registros ) y obtenga su subconjunto del resultado anterior.
fuente
Otra opción es algo que he encontrado recientemente (de acuerdo, sin embargo, yo estoy a usarlo, pero el plan de pronto):
rdbms-subsetter
.Es un poco más simple y ligero que Jailer, con algunas características / ventajas agradables:
Vale la pena mencionar otra opción para las bases de datos de Heroku específicamente, que he usado mucho (como solía trabajar allí).
Heroku en realidad es bastante rápido en traer una nueva base de datos instantánea, ya que primero extrae los registros de escritura anticipada para prepararse, luego se conecta a la base de datos primaria para ponerse al día y luego deja de seguirla. Puede crear estos "tenedores" en todas las aplicaciones para evitar afectar demasiado la producción:
Luego, puede iniciar su aplicación localmente apuntando a esa instantánea. Utilizo esto con frecuencia para hacer una ejecución en seco de migraciones de datos o esquemas o depurar problemas de clientes.
En ese comando anterior, si tiene un DB accesible con
DATABASE_URL
activadoyour-production-app
, terminará con un DB accesible conPRODUCTION_SNAPSHOT_URL
(si lo especificó--as
) en una aplicación diferente llamadasome-other-app-to-own-forked-database
.fuente
Para obtener un conjunto aleatorio de filas, puede usar LIMIT así:
Esta es la más fácil y solo elegirá las 100 primeras filas que encontró PostreSQL. Puede ser el último 100 insertado o quizás el 100 primero. Si necesita algo realmente aleatorio, mire esta respuesta de Stackoverflow .
fuente
LIMIT
no se ocupará de las referencias de FK. Por ejemplo: 100 filas de la tabla de pedidos pueden contener clientes que no están presentes al exportar 100 filas de la tabla de clientes.