Создание дампа базы данных для определенных таблиц и записей Postgres - PullRequest
67 голосов
/ 09 сентября 2011

У меня есть база данных с сотнями таблиц, мне нужно экспортировать указанные таблицы и вставить операторы для данных в один файл sql.

Единственное, что я знаю, можно добиться этого -

pg_dump -D -a -t zones_seq interway > /tmp/zones_seq.sql

Должен ли я выполнить этот оператор для каждой таблицы или есть способ запустить аналогичный оператор для экспорта всех выбранных таблиц в один большой sql большой. Приведенный выше pg_dump не экспортирует только схему таблицы, мне нужны оба

Любая помощь будет оценена.

Ответы [ 2 ]

125 голосов
/ 09 сентября 2011

Справа от руководства : " Можно выбрать несколько таблиц, написав несколько ключей -t "

Так что вам нужно перечислить все свои таблицы

pg_dump --column-inserts -a -t zones_seq -t interway -t table_3 ... > /tmp/zones_seq.sql  

Обратите внимание, что если у вас есть несколько таблиц с одинаковым префиксом (или суффиксом), вы также можете использовать подстановочные знаки, чтобы выбрать их с параметром -t:

" Кроме того,Параметр таблицы интерпретируется как шаблон в соответствии с теми же правилами, которые используются командами psql \ d"

16 голосов
/ 06 декабря 2013

Если эти конкретные таблицы соответствуют определенному регулярному выражению, вы можете использовать параметр регулярного выражения в -t в pg_dump.

pg_dump -D -a -t zones_seq -t interway -t "<regex>" -f /tmp/zones_seq.sql <DBNAME>

Например, для дампа таблиц, которые начинаются с «test», вы можете использовать

pg_dump -D -a -t zones_seq -t interway -t "^test*" -f /tmp/zones_seq.sql <DBNAME>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...