Postgres pg_dump с использованием сжатия - Сохранение схемы только для некоторых таблиц

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

Вот рабочий процесс, который я сейчас использую:

pg_dump -U postgres -h example.com -T very_large_tbl -T large_tbl db > /tmp/mydbdump

pg_dump -U postgres -h example.com -s -t very_large_tbl -t large_tbl db >> /tmp/mydbdump

bzip2 -zc < /tmp/mydbdump > /tmp/compressed_dbdump.dat.bz2

Рабочий процесс требует следующих рекомендаций:

  1. таблицы very_large_tbl а также large_tbl нужно экспортировать без данных (только схема).
  2. Все остальные таблицы требуют экспорта схемы и данных.
  3. Конечный результат должен быть сжат

Мой текущий рабочий процесс следует этим рекомендациям без проблем. Однако при тестировании на других базах данных pg_dump -F c имеет НАМНОГО более быстрое общее время процесса по сравнению с экспортом и последующим сжатием.

Из того, что я могу сказать, вы не можете использовать -s в pg_dump "выбрать и выбрать", какие таблицы получают только схему. Это все или ничего. Я здесь не прав?

У меня вопрос такой:

Можно ли экспортировать "некоторые" таблицы в виде схемы только при использовании -F c вариант pg_dump? Или, возможно, можно добавить к существующему дампу, который был сжат -F c?

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

1 ответ

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

pg_dump имеет --exclude-table-data вариант.

Таким образом, чтобы исключить данные для таблицы с именем my_table это так же просто, как --exclude-table-data=my_table

Это выведет информацию о создании таблицы, но исключит любые данные в ней.

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