psql无效命令\ N同时还原sql

我试图恢复我的转储文件,但它导致了一个错误:

psql:psit.sql:27485: invalid command \N 

有解决scheme吗? 我搜查了,但是我没有得到明确的答案。

Postgres使用“\ N”作为NULL值的替代符号。 但所有psql命令都以反斜杠“\”符号开始。 所以你可以得到这个消息,当可能复制语句失败时,但转储的加载继续。 这个消息只是虚惊一场。 因为COPY语句失败,你必须在之前search一行。

有可能切换psql“停止第一个错误”模式,并find错误:

 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

我也遇到过这个错误。 Pavel是正确的,通常是由pg_restore创build的脚本中的某些内容失败。 由于所有的“/ N”错误,在输出结果的顶部你没有看到真正的问题。 我build议:

  1. 插入一个单一的小表(例如, pg_restore --table=orders full_database.dump > orders.dump
  2. 如果你没有一个小的文件,那么从还原脚本中删除一堆logging – 我只是确保./是要加载的最后一行(例如,打开orders.dump并删除一堆logging)
  3. 观看标准输出,一旦发现问题,您可以随时删除表格并重新加载

在我的情况下,我没有安装“hstore”扩展,所以脚本失败了。 我在目标数据库上安装了hstore,然后又恢复了业务。

您可以使用INSERT语句,使用–inserts参数来生成转储。

我知道这是一个旧的post,但我碰到了另一个解决scheme:postgis没有安装在我的新版本,这导致我在pg_dump上的同样的错误

在我最近的经验中,当真正的问题与转义字符或换行符无关时,可能会出现这个错误。 在我的情况下,我已经从数据库A创build了一个转储
pg_dump -a -t table_name > dump.sql
并试图将其恢复到数据库B
psql < dump.sql (当然更新了正确的env vars之后)
我最后想到的是转储,尽pipe它只是data-only-a选项,以便表结构没有明确的转储的一部分),是模式特定的。 这意味着,如果不手动修改转储,我不能使用从schema1.table_name生成的转储来填充schema2.table_name 。 手动修改转储很容易,模式在前15行左右。

安装postgresql-(你的版本)-postgis-scripts

大多数情况下,解决scheme是安装postgres-contrib软件包。