Получение образца вашей базы данных - Postgresql

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

Спасибо

2 ответа

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

Из README:

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

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

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

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

Другие вопросы по тегам