还原sql时psql命令无效\N
我正在尝试还原转储文件,但它导致了一个错误:还原sql时psql命令无效\N,sql,postgresql,dump,Sql,Postgresql,Dump,我正在尝试还原转储文件,但它导致了一个错误: psql:psit.sql:27485: invalid command \N 有解决办法吗?我搜索了,但没有得到明确的答案。Postgres使用\N作为空值的替换符号。但所有psql命令都以反斜杠符号开头。当copy语句失败,但dump的加载仍在继续时,您可以获得这些消息。此消息是错误警报。如果要查看COPY语句失败的真正原因,必须搜索此错误之前的所有行 可以切换psql以在第一个错误模式下停止并查找错误: psql -v ON_ERROR_ST
psql:psit.sql:27485: invalid command \N
有解决办法吗?我搜索了,但没有得到明确的答案。Postgres使用\N作为空值的替换符号。但所有psql命令都以反斜杠符号开头。当copy语句失败,但dump的加载仍在继续时,您可以获得这些消息。此消息是错误警报。如果要查看COPY语句失败的真正原因,必须搜索此错误之前的所有行 可以切换psql以在第一个错误模式下停止并查找错误:
psql -v ON_ERROR_STOP=1
我过去也遇到过这个错误。Pavel是正确的,这通常是pg_restore创建的脚本中的某些内容失败的迹象。由于所有的/N错误,您在输出的最顶端看不到真正的问题。我建议: 插入单个小表,例如pg_restore -表=订单已满\u database.dump>orders.dump 如果没有一个小的,那么从恢复脚本中删除一组记录-我只是确保./是最后一行要加载,例如,open orders.dump和delete一组记录 观察标准输出,一旦你发现问题,你总是可以放弃 打开桌子,重新装填
在我的例子中,我还没有安装hstore扩展,所以脚本在最顶端失败了。我在目标数据库上安装了hstore,然后又恢复了业务。我在尝试从二进制pg_转储还原时收到了相同的错误消息。我只是使用pg_restore来恢复我的转储,并完全避免了错误,例如 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
根据我最近的经验,当真正的问题与转义字符或换行符无关时,可能会出现这种错误。在我的例子中,我已经用 pg_dump-a-t表_name>dump.sql 并试图用 当然,在更新适当的环境变量之后,psql
pg_dump dbname --username=usernamehere --password --no-owner --no-privileges --data-only --inserts -t 'schema."Table"' > filename.sql
2 psql恢复转储的文件
psql "dbname=dbnamehere options=--search_path=schemaname" --host hostnamehere --username=usernamehere -f filename.sql >& outputfile.txt
注意-1确保添加outputfile将提高导入速度
注意-2在使用psql导入之前,不要忘记使用完全相同的名称和列创建表 我也遇到了同样的问题,我创建了一个新数据库,但在使用psql进行还原时\N收到了无效的命令。 我通过使用旧数据库设置相同的表空间解决了这个问题
例如,旧数据库备份有表空间pg_default,我为新数据库定义了相同的表空间,上面的错误已经消失了 我遵循了所有这些示例,它们都失败了,出现了我们正在讨论的错误: 使用-C的语法起作用,请参见此处:
pg_dump -C -t tableName "postgres://$User:$Password@$Host:$Port/$DBName" | psql "postgres://$User:$Password@$Host:$Port/$DBName"
此外,如果两个数据库之间存在不同的模式,我发现更改一个数据库的模式以匹配其他数据库的模式是表副本正常工作所必需的,例如:
我的解决办法是:
psql -U your_user your_db < your.file.here.sql 2>&1|more
这样我就可以读取错误消息
我希望这对任何人都有帮助。对我来说,编码和语言环境与源数据库不同。
一旦我删除了目标数据库并重新创建了它,它就工作得很好。是的,很容易犯错误,因为这些无效命令错误的数量可能非常大,完全掩盖了早期出现的第一个错误。PostgreSQL给出这样一个误导性的警告是非常邪恶的,您的回答为我节省了很多时间@Tregoreg-是的,它不友好-您可以在第一次出错时停止模式下运行psql。它简化了诊断psql-v ON_ERROR_STOP=1,例如创建表格时可能发生。。。开始时失败,但加载仍在继续。我来这里也是因为同样的原因
错误我想到的是:pg|U恢复…|psql。。。2> &1 |这对我来说太有用了!pg_dump-inserts$DATABASE>$filename也大大降低了cpu使用率,不是吗?我还没有安装hstore扩展,TNX。真是个救命稻草!太棒了,谢谢
psql -U your_user your_db < your.file.here.sql 2>&1|more