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

В настоящее время я использую ночной экспорт базы данных Postgres 10.5, но использую схему только для двух очень больших таблиц, для которых мне не нужны данные. Я сжимаю экспорт, когда закончу, и действительно хотел бы использовать внутреннюю систему сжатия 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 ?

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

0
задан 30 April 2019 в 20:50
1 ответ

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

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

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

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

1
ответ дан 4 December 2019 в 15:42

Теги

Похожие вопросы