У меня есть файл дампа из базы данных 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 для прямого подключения к базе данных для ее восстановления.