Исключить таблицу во время 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
Другие вопросы по тегам