Создание дампа базы данных для конкретных таблиц и записей Postgres
У меня есть база данных с сотнями таблиц, мне нужно сделать, это экспортировать указанные таблицы и вставить инструкции для данных в один файл sql.
Единственное, что я знаю, может это сделать.
pg_dump -D -a -t zones_seq interway > /tmp/zones_seq.sql
Должен ли я запускать этот оператор для каждой таблицы или есть способ запуска аналогичного оператора для экспорта всех выбранных таблиц в один большой sql большой. Pg_dump выше не экспортирует только схему таблиц, мне нужны оба
Любая помощь будет оценена.
Ответы
Ответ 1
Справа от руководства: "Несколько таблиц можно выбрать, написав несколько переключателей -t"
Так что вам нужно перечислить все ваши таблицы
pg_dump --column-inserts -a -t zones_seq -t interway -t table_3 ... > /tmp/zones_seq.sql
Обратите внимание, что если у вас есть несколько таблиц с одинаковым префиксом (или суффиксом), вы также можете использовать подстановочные знаки, чтобы выбрать их с параметром -t
:
"Кроме того, параметр таблицы интерпретируется как шаблон в соответствии с теми же правилами, которые используются командами psql\d"
Ответ 2
Если эти конкретные таблицы соответствуют определенному регулярному выражению, вы можете использовать регулярное выражение в опции -t в pg_dump.
pg_dump -D -a -t zones_seq -t interway -t "<regex>" -f /tmp/zones_seq.sql <DBNAME>
Например, для дампа таблиц, которые начинались с "теста", вы можете использовать
pg_dump -D -a -t zones_seq -t interway -t "^test*" -f /tmp/zones_seq.sql <DBNAME>