#postgresql #postgresql-9.4
#postgresql #postgresql-9.4
Вопрос:
я использую Postgres EnterpriseDB 9.5.0.5
Я создал дамп схемы с помощью приведенной ниже команды
pg_dump -n 'schema1' db1 > schema1.dump
Теперь я хочу восстановить его в другой базе данных (db2), какую команду я должен использовать.
я пытался
pg_restore -d DB2 schema1.dump;
но он показывает ошибку
pg_restore: [archiver] input file does not appear to be a valid archiver
Комментарии:
1. Ваша
pg_dump
команда создает SQL-скрипт, а не «пользовательский архив». Вам нужно использоватьpg_dump --format=c
, если вы хотите использоватьpg_restore
Ответ №1:
У вас есть два варианта:
- если вы включаете опцию no -f для pg_dump, создается sql-скрипт, который затем восстанавливается с использованием psql, а не pg_restore
- Вы могли бы добавить -fc для создания пользовательского двоичного / сжатого формата, а затем использовать pg_restore, как вы пытаетесь сделать.
Однако pg_restore в основном преобразует архив в SQL-скрипт, поэтому это бесполезно, когда вы начинаете с sql-скрипта.
Ответ №2:
pg_dump -Fc mydb > db.dump
pg_restore -c -d mydb db.dump