сбой восстановления pg на zlib сжатый дамп

создал дамп базы данных postgresql (windows версии 9.3 или 9.4) с командой:

C:>pg_dump -U user -Z 6 database > db.dump

восстановление с помощью psql или pg_restore завершается ошибкой:

C:>psql.exe -U postgres db < db.dump  
ERROR: invalid byte sequence for encoding "UTF8": 0x8b

C:>pg_restore.exe -U postgres -d db < db.dump  
pg_restore: [archiver] input file does not appear to be a valid archive

C:>pg_restore.exe -U postgres -d db --format=c db.dump
pg_restore: [archiver] did not find magic string in file header

попытка проверить файл:

user:~$ file db.dump
db.dump: gzip compressed data, from NTFS filesystem (NT)

user:~$ zcat db.dump
gzip: db.dump: invalid compressed data--format violated

Итак, как восстановить этот сжатый дамп ?

25
задан macns
29.01.2023 6:55 Количество просмотров материала 3435
Распечатать страницу

2 ответа

файл, который вы создали является gzipped текстовый файл. Чтобы восстановить это, Используйте что-то вроде

zcat db.dump | psql ...

Если вы хотите не текстовый дамп, вы должны использовать опцию -Fc при работе pg_dump.

1
отвечен Peter Eisentraut 2023-01-30 14:43

краткий ответ: запустить fixgz http://www.gzip.org/fixgz.zip на сжатый дамп.

fixgz.exe bad.gz fixed.gz

длинный ответ: Таким образом, если вы использовали pg_dump с --compresss или-Z без указания опции пользовательского формата (-Fc), то вы фактически получаете сжатый файл в режиме ASCII вместо двоичного режима.

цитирую http://www.gzip.org/#faq1

Если Вы перенесли файл в режиме ASCII и у вас больше нет доступ к оригинал, вы можете попробовать программу fixgz удалить дополнительные байты CR (возврат каретки), вставленные при передаче. окно 9X/NT/2000/ME / XP binary находится здесь. Но нет абсолютно никакой гарантии что это действительно исправит ваш файл. Вывод: никогда не передавать двоичные файлы в режиме ASCII.

1
отвечен macns 2023-01-30 17:00

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх