Я пытаюсь восстановить файл дампа, но это вызвало ошибку:
psql:psit.sql:27485: invalid command \N
Есть ли решение? Я искал, но я не получил четкого ответа.
Я пытаюсь восстановить файл дампа, но это вызвало ошибку:
psql:psit.sql:27485: invalid command \N
Есть ли решение? Я искал, но я не получил четкого ответа.
Postgres использует "\n" в качестве символа замены для значения NULL. Но все команды psql начинаются с символа "\" с обратной косой чертой. Таким образом, вы можете получить это сообщение, если, вероятно, копия не выполняется, но загрузка дампа продолжается. Это сообщение является только ложным сигналом. Вы должны искать строки перед тем, почему причина утверждения COPY не работает.
Можно переключить psql на режим "stop on first error" и найти ошибку:
psql -v ON_ERROR_STOP=1
При попытке восстановления из двоичного дампа появляется одно и то же сообщение об ошибке. Я просто использовал pg_restore
для восстановления моего дампа и полностью избегал ошибок \N
, например.
pg_restore -c -F t -f your.backup.tar
Объяснение переключателей:
-f, --file=FILENAME output file name
-F, --format=c|d|t backup file format (should be automatic)
-c, --clean clean (drop) database objects before recreating
В прошлом я столкнулся с этой ошибкой. Павел прав, обычно это знак того, что что-то в script, созданное pg_restore, терпит неудачу. Из-за всех ошибок "/N" вы не видите реальной проблемы на самой вершине вывода. Я предлагаю:
pg_restore
--table=orders full_database.dump > orders.dump
)orders.dump
и удалите куча записей).В моем случае у меня не было установленного расширения "hstore", поэтому script терпел неудачу на самом верху. Я установил hstore в базу данных назначения, и я вернулся в бизнес.
Вы можете создать свой дамп, используя инструкции INSERTS, с параметром --inserts.
Я знаю, что это старый пост, но я столкнулся с другим решением: postgis не был установлен в моей новой версии, что вызвало у меня такую же ошибку на pg_dump
В моем недавнем опыте можно получить эту ошибку, когда реальная проблема не имеет ничего общего с escape-символами или символами новой строки. В моем случае я создал дамп из базы данных A с pg_dump -a -t table_name > dump.sql
и пытался восстановить его в базу данных B с помощью psql < dump.sql
(после обновления правильных env vars, конечно)
Я наконец понял, что дамп, хотя это был data-only
(параметр -a
, так что структура таблицы не является явно частью дампа), была специфичной для схемы. Это означало, что без ручной модификации дампа я не мог использовать дамп, сгенерированный из schema1.table_name
, для заполнения schema2.table_name
. Ручная модификация дампа была простой, схема указана в первых 15 строках или около того.
Установите postgresql- (ваша версия) -postgis-scripts
В большинстве случаев решение заключается в установке пакета postgres-contrib
.