我试图恢复我的转储文件,但它导致了一个错误:
psql:psit.sql:27485: invalid command \N
有解决办法吗?我找了,但没有得到明确的答案。
我试图恢复我的转储文件,但它导致了一个错误:
psql:psit.sql:27485: invalid command \N
有解决办法吗?我找了,但没有得到明确的答案。
当前回答
检查表中的列和备份文件中的列是否合适
其他回答
可以使用INSERTS语句和——INSERTS参数生成转储。
我遵循了所有这些例子,它们都失败了,出现了我们正在谈论的错误:
在Postgres中将一个表从一个数据库复制到另一个数据库
有效的是使用-C的语法,请看这里:
pg_dump -C -t tableName "postgres://$User:$Password@$Host:$Port/$DBName" | psql "postgres://$User:$Password@$Host:$Port/$DBName"
此外,如果两者之间有不同的模式,我发现改变一个dB的模式以匹配其他的表副本是必要的,例如:
DROP SCHEMA public;
ALTER SCHEMA originalDBSchema RENAME TO public;
我知道这是一个旧帖子,但我遇到了另一个解决方案:postgis没有安装在我的新版本上,这导致我在pg_dump上出现同样的错误
我有同样的问题,我创建了一个新的数据库,并得到无效的命令\N恢复与psql。 我通过设置与旧数据库相同的表空间来解决这个问题。
例如,旧数据库备份有表空间“pg_default”,我给新数据库定义了相同的表空间,上面的错误已经消失了!
今天我也遇到了同样的事。我通过使用——inserts命令转储来处理问题。
我所做的是:
1) pg_dump插入:
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导入之前,不要忘记创建具有完全相同名称和列的表。