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
Рабочий процесс требует следующих рекомендаций:
- таблицы
very_large_tbl
а такжеlarge_tbl
нужно экспортировать без данных (только схема). - Все остальные таблицы требуют экспорта схемы и данных.
- Конечный результат должен быть сжат
Мой текущий рабочий процесс следует этим рекомендациям без проблем. Однако при тестировании на других базах данных 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
Это выведет информацию о создании таблицы, но исключит любые данные в ней.