Назад | Перейти на главную страницу

Восстановление базы данных Postgresql из дампа не удается

У меня есть файл дампа из базы данных Postgresql. Однако, если я запускаю psql -U user <db.sql под Windows, я получаю

 ERROR:  missing data for column "x"

для определенных строк. Дело в том, что данные для «х» не пропали. Я предполагаю, что в столбце перед «x» есть символы, которые каким-то образом повредили импорт, но я понятия не имею, что это могло быть.

Любые идеи? Версия Postgre - 8.3.7

Изменить: было бы неплохо опустить оскорбительные строки, если процесс восстановления может продолжаться изящно после обнаружения строки.

Edit2: Похоже, виновником являются символы Ctrl-Z (ascii 26) в дампе, которые интерпретируются как конец файла под окнами (?).

Вы пробовали передать файл с помощью -f флаг вместо перенаправления ввода? Возможно, перенаправление вашей консоли работает странно:

psql -U user -f db.sql

Учитывая, что это в Windows, я не удивлюсь, если это так.

У вас не должно возникнуть проблем с символами - если они были успешно экспортированы, они должны быть импортированы нормально. Возможно ли, что вам также понадобится схема со старого сервера базы данных?

Если вы посмотрите в файл дампа, можете ли вы найти строку, в которой он задыхается? Есть что-нибудь странное?

Я не мог восстановить из дампа .sql (возникла та же ошибка), потому что мой дамп был неправильно завершен (возникали ошибки, когда я создавал дамп, но почему-то я их не заметил). Поэтому всегда перепроверяйте, есть ли у вас действующий файл дампа!

Попробуйте выполнить дамп в настраиваемом формате (-Fc), а затем используйте pg_restore для прямого подключения к базе данных для ее восстановления.