Viv*_*nth 120 sql postgresql dump
我正在尝试恢复我的转储文件,但它导致了一个错误:
psql:psit.sql:27485: invalid command \N
Run Code Online (Sandbox Code Playgroud)
有解决方案吗?我搜索过,但我没有得到一个明确的答案.
Pav*_*ule 182
Postgres使用"\ N"作为NULL值的替换符号.但所有psql命令都以反斜杠"\"符号开头.因此,当可能复制语句失败时,您可以获得此消息,但转储加载仍在继续.此消息仅为虚警.您必须先搜索一行,原因是COPY语句失败.
可以将psql切换为"在第一个错误时停止"模式并查找错误:
psql -v ON_ERROR_STOP=1
Run Code Online (Sandbox Code Playgroud)
mes*_*lds 33
尝试从二进制转储还原时,我会出现相同的错误消息.我只是用来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创建的脚本中的某些内容失败了.由于所有"/ N"错误,您没有在输出的最顶部看到真正的问题.我建议:
pg_restore
--table=orders full_database.dump > orders.dump)orders.dump并删除一堆记录)在我的情况下,我还没有安装"hstore"扩展,所以脚本在顶部失败了.我在目标数据库上安装了hstore,然后我又回来了.
今天同样的事情发生在我身上。我通过使用 --inserts 命令转储来处理问题。
我要做的是:
1) 带插入的 pg_dump:
pg_dump dbname --username=usernamehere --password --no-owner --no-privileges --data-only --inserts -t 'schema."Table"' > filename.sql
Run Code Online (Sandbox Code Playgroud)
2) psql (恢复你的转储文件)
psql "dbname=dbnamehere options=--search_path=schemaname" --host hostnamehere --username=usernamehere -f filename.sql >& outputfile.txt
Run Code Online (Sandbox Code Playgroud)
Note-1 ) 确保添加 outputfile 会提高导入速度。
注2)在使用psql导入之前,不要忘记创建具有完全相同名称和列的表。