PostgreSQL- 恢复 .dump 文件

39

我是一个新手,拿到了来自我的服务器的data.dump文件。我需要在本地恢复它。 我尝试了以下命令。

i) psql -U postgres dbname -f servicedb.dump

Error:
      psql: warning: extra command-line argument "-f" ignored
      psql: warning: extra command-line argument "servicedb.dump" ignored

ii) 使用psql -U postgres dbname < servicedb.dump命令导入服务数据库。

 Error:
              ^
 ERROR:  syntaxe error at or near "☺"
 LINE 1: ☺☺

这个".dump"文件是什么,如何恢复它?

8个回答

51

我从我的服务器(Heroku)获取了一个.dump文件。正如Klaus所说,pg_restore是我在本地恢复它的唯一方式。

我在终端中输入的是:

pg_restore -c -d [database_name] [dumpfile_name].dump

您可以在 Klaus 提供的 pg_restore 链接中看到很多选项 :)


22

适用于PostgreSQL 9.2版本

pg_restore --verbose --clean --no-acl --no-owner -h localhost -U [user] -d [db] [filename].dump

22

psql -f filenamed.dmp db_name

这个命令可以正常运行。


5
不适用于二进制转储,这是由提问者的第二点指示所表示的。 - Sussch

10

4

我发现在Windows环境下有些棘手。

如果是文本格式的dump,pg_restore将无法工作。在这种情况下,我们需要使用psql。

psql -U用户名 -f数据库.dump 数据库名

它会提示输入用户名的密码,然后启动恢复过程。


3

pg_restore并不是很明显,这是我在运行在AWS上的远程Postgres实例中创建新数据库并将dump文件还原到其中所使用的命令。如果您的连接正确,pg_restore应立即要求您输入密码。

pg_restore -h mypostgresdb.eu-west-1.rds.amazonaws.com -U adminuser --verbose -C -d existingdatabase mydbdump.dm

开关的位置:

  • -h - 在aws上的主机名
  • -U - 用户名,这必须是具有创建数据库权限的管理员用户
  • --verbose - 获取详细输出到屏幕
  • -C - 表示从dumpfile创建全新的数据库(它将被命名为您转储的数据库名称)
  • -d - 令人困惑的是,这需要是一个已经存在的数据库的名称,基本上pg_restore需要连接到现有的数据库,以便可以运行必要的脚本来创建新的数据库
  • mydbdump.dmp - 这是您正在尝试还原的转储文件的位置。

0
如果您有pgsql转储文件(例如pgsql_dump.sql.gz)并希望恢复它,请尝试按照以下步骤操作-
sudo su postgres
psql

drop database my_database;

(用于删除现有数据库。如果存在数据库,请提供要恢复的数据库名称替代my_database
create database my_database;

(请在“my_database”的位置提供您想要恢复的数据库名称)

\q

(这是退出 psql 的命令)

gunzip <  /tmp/pgsql_dump.sql.gz | psql -Upostgres my_database 

(在/tmp/的位置提供实际的转储文件路径)


0

psql 用于纯文本转储,使用 pg_restore。


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