pg_dump --clean терпит неудачу в зависимости от --format - PullRequest
0 голосов
/ 07 октября 2019

При получении дампа базы данных с pg_dump --clean по умолчанию создается простой файл .sql. Восстановление работает нормально.

pg_dump --clean > dump.sql  
psql < dump.sql  

Однако при предоставлении флага --format=t для pg_dump, а затем при извлечении файла с помощью tar восстановление завершается неудачей.

pg_dump --clean  --format=t > dump.tar  
[toc.dat, nnnn.dat, and restore.sql extracted]  
tar -xvf dump.tar  
psql < restore.sql  

С различными

ОШИБКА: не удалось открыть файл "$$ PATH $$ / 1234.dat" для чтения: такой файл или каталог

ограничение для отношения уже существует

отношение уже существуетсуществует

несколько первичных ключей для таблицы

Что отличается при сохранении в виде tar?

Ответы [ 2 ]

1 голос
/ 07 октября 2019

Вы получаете почти то же самое без --clean (действительно, формат tar не соблюдает это вообще). Формат tar просто не очень удобен в использовании, вам, вероятно, следует использовать что-то еще.

См. Первые несколько строк restore.sql

--
-- NOTE:
--
-- File paths need to be edited. Search for $$PATH$$ and
-- replace it with the path to the directory containing
-- the extracted data files.

На основев сообщении об ошибке вы этого не сделали.

0 голосов
/ 07 октября 2019

Параметр --clean имеет смысл только для простого текста. Для форматов архивов вы должны использовать pg_restore .

--format не только для изменения формата возвращаемого файла, но и для типа резервного копирования.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...