我用

pg_dump db_production > postgres_db.dump

然后使用scp将其复制到localhost。

现在当我导入我的本地db时,它给出了一个错误

pg_restore: [archiver] input file appears to be a text format dump. Please use psql.

使用命令行

pg_restore -d db_development postgres_db.dump

当前回答

如果使用pg_dump和-Fp进行明文备份,则使用以下命令:

cat db.txt | psql dbname

将所有数据复制到名为dbname的数据库

其他回答

这是解,

pg_restore -U username -p 5432 -h 10.10.10.1 -d database_name < dump_file . pg_restore -U username -p 5432

对我来说,当我试图从远程主机恢复我使用

psql -U username -p 5432 -h 10.10.10.1 -d database < db.dump

工作得很好。如果不是远程,只是下面的命令工作。

psql -d database < db.dump

如果使用pg_dump和-Fp进行明文备份,则使用以下命令:

cat db.txt | psql dbname

将所有数据复制到名为dbname的数据库

当我尝试用DBeaver备份db时,我得到了相同的错误。如果有人在Windows上使用DBeaver界面而不是命令行,请确保在备份和恢复设置时选择的格式为tar。

为了使用pg_dump创建与pg_restore兼容的备份,在创建转储时必须使用——format=custom / -Fc。

从文档中可以看出:

输出适合输入到pg_restore的自定义格式的存档。

所以你的pg_dump命令可能是这样的:

pg_dump --file /tmp/db.dump --format=custom --host localhost --dbname my-source-database --username my-username --password

你的pg_restore命令:

pg_restore --verbose --clean --no-acl --no-owner --host localhost --dbname my-destination-database /tmp/db.dump