Исключить таблицу во время pg_restore
ОБНОВЛЕНИЕ: удалось исключить данные в таблице во время команды pg_dump. Делает это даже быстрее, чем пытаться не загружать данные, потому что вам не нужно ждать, пока эти данные будут сброшены.
--exclude-table-data=event_logs
(PostgreSQL) 9.4.4
Кто-нибудь знает, как исключить таблицу при выполнении pg_restore
? Я могу найти, как это сделать при выполнении pg_dump
, Однако я не тот, кто делает дамп и не может их исключить.
В дампе есть 2 таблицы, которые действительно большие и занимают целую вечность, когда я делаю восстановление, поэтому я хочу пропустить их.
2 ответа
У pg_restore нет параметра таблицы исключений, у него есть параметр таблицы включения.
стол
--table= таблица
Восстановить определение и / или данные только именованной таблицы. Несколько таблиц могут быть указаны с несколькими ключами -t. Это можно комбинировать с опцией -n, чтобы указать схему.
Если у вас есть большое количество таблиц, это требует небольшого набора текста, но позволяет исключить определенные таблицы, просто оставив их имена вне списка.
У меня такая же проблема. Длинный список таблиц, и я хочу исключить данные из нескольких таблиц.
Я сделал следующее:
Бежать
pg_restore -l $pgdump_file > restore.pgdump.list
Открой это restore.pgdump.list
файл в редакторе, и вставьте ;
перед линией говорят
;2429; 0 27550 TABLE DATA public <table_to_explore> <database>
После сохранения этого файла его можно использовать для импорта, где все строки начинаются с ;
игнорируются
pg_restore -L restore.pgdump.list | psql
Вы можете сделать одну строку, чтобы добавить ;
перед строками, имеющими определенное имя таблицы, если вы полностью хотите игнорировать конкретную таблицу.
man pg_restore
Об этом также говорится в примере в конце документации.
Вот одна строка, основанная на других ответах:
pg_restore -L <(pg_restore -l ~/base.bck | grep -ivE 'TABLE DATA public (exclude_tbl_name|exclude_tbl_name_2|exclude_tbl_name_3)') -d base_truncated ~/base.bck
Тут команда не сработала:
pg_restore -L restore.pgdump.list | psql
ответил Джеспер Гранн Лаурсен!
Здесь это работает, следуя следующей последовательности:
pg_restore -l $pgdump_file > restore.pgdump.list
;2429; 0 27550 TABLE DATA public <table_to_explore> <database>
pg_restore -v -L restore.pgdump.list -d dbname pgdump.file