В настоящее время я использую ночной экспорт базы данных 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
Рабочий процесс требует следующих рекомендаций:
very_large_tbl
и large_tbl
необходимо экспортировать без данных (только схема). Мой текущий рабочий процесс без проблем следует этим рекомендациям. Однако при тестировании в других базах данных с использованием pg_dump -F c
имеет НАМНОГО более быстрое общее время процесса по сравнению с экспортом и последующим сжатием.
Насколько я могу судить, вы не можете использовать -s
в pg_dump
чтобы «выбрать и выбрать», какие таблицы получают только схему. Все или ничего. Я здесь не прав?
У меня такой вопрос:
Можно ли экспортировать «некоторые» таблицы в виде схемы только при использовании -F c
вариант pg_dump? Или, возможно, можно добавить к существующему дампу, который был сжат с помощью -F c
?
Даже если процесс должен состоять из двух частей, это нормально, и я открыт для нестандартных решений. Просто интересно, возможно ли это вообще.
Ну, как всегда, мне просто нужно было вернуться к документации и внимательно изучить ее.
pg_dump имеет --exclude-table-data
вариант.
Итак, чтобы исключить данные для таблицы с именем my_table
это так просто, как --exclude-table-data=my_table
Это сбросит информацию о создании для таблицы, но исключит любые данные в ней.