Команда Postgres pg_restore для восстановления полной схемы

#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:

У вас есть два варианта:

  1. если вы включаете опцию no -f для pg_dump, создается sql-скрипт, который затем восстанавливается с использованием psql, а не pg_restore
  2. Вы могли бы добавить -fc для создания пользовательского двоичного / сжатого формата, а затем использовать pg_restore, как вы пытаетесь сделать.

Однако pg_restore в основном преобразует архив в SQL-скрипт, поэтому это бесполезно, когда вы начинаете с sql-скрипта.

Ответ №2:

pg_dump -Fc mydb > db.dump

pg_restore -c -d mydb db.dump