Получение образца вашей базы данных - Postgresql - PullRequest
6 голосов
/ 09 февраля 2012

у нас есть полу-большая база данных, которая занимает много времени для локального импорта на наших отдельных машинах разработчика.Мне было интересно, есть ли какие-нибудь инструменты, которые могли бы подключиться к базе данных, сделать небольшой анализ и извлечь образец базы данных, сохраняя все отношения через переданный параметр.Что-то вроде pg_sample --rough_size 1000 --dbhost mydbhost --dbuname uname --dbpword pword это создает дамп, который я могу импортировать в свою базу данных для тестирования и разработки.Но это не займет 45 минут.

Спасибо

Ответы [ 2 ]

5 голосов
/ 24 июня 2013

Я написал такой инструмент: https://github.com/mla/pg_sample

от README:

pg_sample - это утилита для экспорта небольшого образца набора данных из большая база данных PostgreSQL. Параметры вывода и командной строки очень похожи на утилиту резервного копирования pg_dump (хотя только поддерживается простой текстовый формат).

Образец базы данных включает в себя все таблицы из оригинала, поддерживает ссылочную целостность и поддерживает циклические зависимости.

2 голосов
/ 22 февраля 2012

Предлагаю вам исследовать pg_dump --format=custom и pg_restore -j 12. Формат custom позволяет выполнять параллельное восстановление (и при желании может быть выгружен в необработанный SQL, поэтому вы не теряете здесь никакой функциональности). Параметр -j, равный pg_restore, вызывает параллельное выполнение восстановления. Это может обеспечить существенное ускорение. Особенно если вы подняли ваш файл maintenance_work_mem красивым и большим.

Это не решит проблему, о которой вы спрашивали напрямую, по причинам, изложенным Эрвином выше, а также потому, что требует определенного уровня знаний о том, что важно представлять, а что нет, просто отсутствует в схеме. Это то, что отнимает время у разработчика и, как правило, должно выполняться одновременно с созданием схемы.

...