无法使用pg_restore还原Postgres的转储备份文件

8

我使用以下命令为我的Postgres 9.3.4生成了一个转储备份文件:

pg_dump table_name -U myusername -h localhost -O > backup.dump

现在我正在尝试使用以下方法备份旧数据库:
pg_restore -U myusername -n public -d table_name  backup.dump

但是我一直收到这个错误提示:
pg_restore: [archiver] input file appears to be a text format dump. Please use psql.

请注意,这个文件不是普通的SQL文件,因为我是使用pg_dump生成的。
我使用了以下命令:
psql perchwell -U myusername -f backup.dump -v ON_ERROR_STOP=1

并开始收到以下错误信息:

SET
SET
SET
SET
SET
SET
psql:backup.dump:16: ERROR:  schema "propertydir" already exists
2个回答

10

pg_dump的默认输出格式实际上是纯文本SQL脚本。因此请使用psql进行导入,或者重新使用-Fc标志进行转储。


谢谢Eelke,我正在使用psql -U myusername -d db_name -1 -f backup.dump命令,但是我一直收到以下提示:“无效的命令\N”。我做错了什么吗? - Eki Eqbal
请使用pg_dump而不是psql。 - marceljg
1
@EkiEqbal 请编辑您的问题以显示完整输出。同时使用 -v ON_ERROR_STOP=1 运行 psql。 - Craig Ringer
你得到一个模式已经存在的错误,因为数据库不干净。首先创建一个新的数据库并将其导入其中。 - Eelke
1
marceljg 正在尝试导入它——而这不是 pg_dump 的用途。 - Alkanshel

0

您的错误:pg_restore:[archiver] 输入文件似乎是文本格式转储。请使用psql命令。

该错误提示使用psql命令导入数据库。

cat your-dump-pg-file.dump | psql -d your-database

这样,您可以轻松地恢复文件。

此外,如果设置字符集为UTF-8,导入效果会更好。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接