Я сбрасываю свою базу данных Postgres с помощью pg_dump (в текстовом формате), а затем восстанавливаю ее просто с помощью psql (с -f
опцией).
Возникает вопрос: я что-то упустил, не используя pg_restore, который выглядит как специализированный инструмент восстановления (по сравнению с универсальным psql
)?
Я могу управлять такими параметрами, как отключение триггеров и тому подобное, используя pg_dump
параметры. Для чего же тогда pg_restore
? не дамп текстовых форматов?
postgresql
postgresql-9.1
Маркус Юний Брут
источник
источник
Ответы:
Если вы создали дамп в формате SQL, все, что вы можете использовать, это
psql
.Если вы создали дамп custom-format (
pg_dump -Fc
) или directory-format (pg_dump -Fd
), вы можете и должны его использоватьpg_restore
.Пользовательские дампы и дампы в формате каталога имеют много преимуществ по сравнению с дампами простых SQL-скриптов, и я использую их исключительно. Вы можете выборочно восстанавливать только некоторые таблицы / схемы, выбирать, включать ли только схему, только данные, или и то, и другое во время восстановления и т. Д. Множество опций, которые вы должны указать при
pg_dump
одновременно с дампами в формате SQL, могут быть выбраны при восстановлении. время, если вы используете дамп пользовательского формата иpg_restore
.Если бы не было обратной совместимости, я уверен, что по умолчанию для
pg_dump
будет-Fc
(пользовательский) формат.Нельзя преобразовать дамп в формате SQL в пользовательский или каталог-формат, не восстановив его в базе данных PostgreSQL, а затем сбросив восстановленную БД.
источник
pg_restore
безdbname
аргумента превратить его в дамп в формате SQL, если он вам нужен. Вы не можете сделать обратное.pg_restore
поддерживает параллельное восстановление, и если вы используете это, это будет намного быстрее.