37

我是 psql 的新手。我从我的服务器 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”文件是什么以及如何恢复它?

4

8 回答 8

51

我从我的服务器(Heroku)获得了一个 .dump 文件。正如克劳斯所说,pg_restore 是我可以在本地恢复它的唯一方法。

我在终端上写的是:

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

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

于 2011-11-18T17:04:39.770 回答
22

psql -f filenamed.dmp db_name

工作正常

于 2012-11-15T10:39:26.637 回答
20

对于 Postgres 9.2

pg_restore --verbose --clean --no-acl --no-owner -h localhost -U [user] -d [db] [filename].dump
于 2014-09-19T12:29:19.733 回答
10

查看pg_restore命令。

于 2009-12-08T11:19:50.423 回答
3

我发现它在 Windows 环境中很棘手。

如果它是文本格式转储,pg_restore 将不起作用。在这种情况下,我们需要使用 psql。

psql -U username -f database.dump databasename

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

于 2019-08-02T11:26:01.213 回答
1

pg_restore 远非显而易见,这是我用来在 AWS 上运行的远程 Postgres 实例上创建新数据库并将转储文件恢复到其中的命令。如果您的连接正确,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 - 表示从转储文件创建一个全新的数据库(它将以您转储的数据库的名称命名)
  • -d - 令人困惑的是,这需要是已经存在的数据库的名称,基本上 pg_restore 需要连接到现有数据库,以便它可以运行必要的脚本来创建新数据库
  • mydbdump.dmp 这是您尝试恢复的转储文件的位置。
于 2018-07-31T10:31:50.080 回答
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/

于 2021-12-16T10:51:04.447 回答
0

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

于 2019-06-13T03:05:38.827 回答