Я использовал pg_dump на одной машине и скопировал файл результатов на другой, где я пытался восстановить его. Я считаю, что схема такая же. Тем не менее, я получаю:
pg_restore: [archiver] input file does not appear to be a valid archive
Я сделал следующие операции:
pg_dump -a -f db.txt dbname
а также:
pg_restore -a -d dbname db.txt
Что может быть не так?
postgresql
gruszczy
источник
источник
Ответы:
Вы дамп в простом формате sql, который был разработан для подачи в psql. Это не распознается pg_restore.
должен сделать трюк
источник
psql dbname < db.txt
;)pg_dump
по умолчанию создает команды sql, необходимые для воссоздания данных. Чтобы восстановить его, вам просто нужно вызватьpsql
(неpg_restore
) файл с вводом.pg_restore
должен использоваться только для двоичного (не по умолчанию и менее обычногоне рекомендуется) форматаpg_dump
. Прочитайте документы .Обновление:
pg_dump
двоичные форматы (-Fc
-Ft
), которые должны использоваться сpg_restore
, в порядке, и предлагают некоторую дополнительную гибкость. Но они менее стандартны (не SQL), менее пригодны для импорта из некоторых инструментов (например, из php-интерфейса) или для работы с текстовым редактором, и немного менее переносимы для других версий и даже других баз данных. Для резервных копий я бы использовал стандартный формат по умолчанию. Для других сценариев опция binary + pg_restore может быть одинаково или более подходящей.Следует учесть, что в Postgresql в типичном сценарии резервное копирование обычно выполняется с помощью pg_dump (plain) и восстановления с помощью стандартного клиента командной строки ( psql ).
источник
Попробуйте передать
--format=c
вариантpg_dump
. Это позволитpg_restore
восстановить его.источник
pg_restore: [archiver] did not find magic string in file header
так что это не работает для простого дампа sqlpg_dump --format=c ...> archivefile
, а затем использоватьpg_restore
наarchivefile
, то (по крайней мере , когда я тестировал только сейчас) он работает отлично. Может быть, ваш файл как-то поврежден? Или вы попали в конкретную ошибку?Это то, что я бы сделал, чтобы сделать резервную копию моей старой базы данных и восстановить
Резервное копирование вашей базы данных
Чтобы восстановить эту резервную копию
Узнайте больше о pg_dump и pg_restore
источник
Для пользователей Windows попробуйте
Работает как шарм
источник
Вы можете сделать что-нибудь с
SOURCE
командой MySQL :Затем в терминале postgresql:
источник
кошка dumpFileName | psql -h ip -d имя_бд -U имя_пользователя -W
источник
Это сообщение об ошибке также может означать, что на самом деле что-то не так с файлом резервной копии (или вашими предположениями по этому поводу).
В одном случае я смонтировал файл резервной копии в контейнере Docker и попытался восстановить его, но это не удалось
does not appear to be a valid archive
. И на самом деле файл был пуст, потому что монтирование не было выполнено правильно.источник