我用

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文档:

例子

将一个名为mydb的数据库转储到一个sql脚本文件:

$ pg_dump mydb > db.sql

要将这样的脚本重载到(新创建的)名为newdb的数据库中:

$ psql -d newdb -f db.sql

将数据库转储到自定义格式的归档文件中:

$ pg_dump -Fc mydb > db.dump

将数据库转储到目录格式的归档文件中:

$ pg_dump -Fd mydb -f dumpdir

将一个归档文件重新加载到一个名为newdb的(新创建的)数据库中:

$ pg_restore -d newdb db.dump

来自pg_restore文档:

例子

假设我们已经将一个名为mydb的数据库转储到一个自定义格式的转储文件中:

$ pg_dump -Fc mydb > db.dump

删除数据库并从转储中重新创建数据库:

$ dropdb mydb
$ pg_restore -C -d postgres db.dump

其他回答

如果您恢复。sql文件。 在pgAdmin中创建一个新数据库。 进入终端,浏览.sql文件所在的文件夹/目录。然后在终端中写入以下命令。

让: 超自然用户后

Examaple:

sudo -u postgres psql newDb < restoreDb.sql

对我来说,就像这样。

C:\Program Files\PostgreSQL\12\bin> psql -U postgres -p 5432  -d dummy -f C:\Users\Downloads\d2cm_test.sql

如果你有一个完整的数据库转储:

PGPASSWORD="your_pass" psql -h "your_host" -U "your_user" -d "your_database" -f backup.sql

但是,如果您的模式是分开保存的,那么这就行不通了。然后需要禁用数据插入触发器,类似于pg_restore——disable-triggers。然后你可以使用这个:

cat database_data_only.gzip | gunzip | PGPASSWORD="your_pass" psql -h "your_host" -U root "your_database" -c 'SET session_replication_role = replica;' -f /dev/stdin

另一方面,我认为这是postgres的一个非常不幸的缺点。在pg_dump中创建转储的默认方式与pg_restore不兼容。然而,加上一些额外的关键字,它就是。WTF ?

psql -U <username> -d <database-name> -h <host-name> -f <backup.sql> . p

上面的答案对我没用,下面这个有用:

PSQL db_development < postgres_db.dump