2012-02-09 21 views
6

tenemos una base de datos semi-grande que lleva mucho tiempo importar localmente en nuestras máquinas de desarrollo individuales. Me preguntaba si había alguna herramienta que pudiera conectarse a una base de datos, hacer un pequeño análisis y extraer una muestra de la base de datos, manteniendo todas las relaciones a través de un parámetro aprobado. Algo como pg_sample --rough_size 1000 --dbhost mydbhost --dbuname uname --dbpword pword Esto crea un volcado que puedo importar a mi base de datos para pruebas y desarrollo. Pero no tomará 45 minutos para hacerlo.Analizando una muestra de su base de datos - Postgresql

Gracias

+0

Esa sería una tarea difícil mientras se preserva la integridad referencial. Piense en una relación 1: n donde una fila en la tabla 'a' hace referencia a 5000 filas en la tabla' b' ... –

+0

estoy de acuerdo, sería. Es por eso que esperaba que ya estuviera escrito. ;) Sin embargo, si también podría proporcionarle algunas clases base para comenzar, y tomar todo en una tabla que tenga un recuento de registros menor que sus valores de tamaño aproximado. – Sector7B

+0

Me encantaría tal herramienta. Puedo soñar ... –

Respuesta

2

que sugieren que investigar pg_dump --format=custom y pg_restore -j 12. El formato custom permite restauraciones paralelas (y se puede volcar en SQL sin procesar, si lo desea, para que no pierda ninguna funcionalidad aquí). El parámetro -j a pg_restore hace que ejecute la restauración en paralelo. Esto puede proporcionar una velocidad sustancial. Especialmente si ha puesto en marcha su maintenance_work_mem agradable y grande.

No resolverá el problema que usted solicitó directamente por los motivos descritos por Erwin anteriormente, y porque requiere un nivel de conocimiento sobre lo que es importante representar y lo que no es simplemente lo que no está en el esquema . Es algo que ocupa mucho tiempo de los desarrolladores y, en general, debe hacerse al mismo tiempo que se está creando el esquema.

+0

Gracias, investigaré y volveré con algunos datos. – Sector7B

4

me escribió una herramienta de este tipo: https://github.com/mla/pg_sample

Desde el README:

pg_sample es una utilidad para la exportación de un pequeño conjunto de datos muestra a partir de una base de datos PostgreSQL grande. Las opciones de salida y línea de comando se parecen mucho a la utilidad de copia de seguridad pg_dump (aunque solo se admite el formato de texto sin formato ).

La base de datos de muestra producida incluye todas las tablas del original, mantiene la integridad referencial y admite dependencias circulares.

Cuestiones relacionadas