↑↓ 选择 ↵ 打开 ⌫ 改范围 完整检索页

pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。

受支持版本: 当前版本 (18) / 17 / 16 / 15 / 14
测试与开发版本: 19 / devel
不受支持的版本: 13 / 12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3 / 8.2 / 8.1 / 8.0 / 7.4 / 7.3 / 7.2 / 7.1 / 7.0
历史版本PostgreSQL 7.0 已于 2005 年 5 月结束社区维护,本页译文保留供仍在使用旧版本的读者参考。新系统请看当前版本。

pg_dump

pg_dump — Extract a Postgres database into a script file

大纲

pg_dump [ dbname ]
pg_dump [ -h host ] [ -p port ]
    [ -t table ]
    [ -a ] [ -c ] [ -d ] [ -D ] [ -i ] [ -n ] [ -N ]
    [ -o ] [ -s ] [ -u ] [ -v ] [ -x ]
    [ dbname ]
  

输入

pg_dump 接受下列命令行参数:

dbname

指定要抽取的数据库名称。dbname 默认为 USER 环境变量的值。

-a

只转储数据,不转储模式(定义)。

-c

创建之前先清除(删除)模式。

-d

将数据转储为正规的插入字符串。

-D

将数据转储为带属性名的插入

-i

忽略 pg_dump 与数据库服务器之间的版本不匹配。由于 pg_dump 对系统目录了解甚多,任何给定版本的 pg_dump 都只打算与相应版本的数据库服务器一起使用。如果你需要忽略版本检查,可以使用此选项(如果 pg_dump 因此而失败,可别怪没警告过你)。

-n

除非绝对必要,抑制标识符周围的双引号。如果标识符中使用了保留字,这可能导致装载这份转储数据时出问题。这是 pg_dump v6.4 之前版本的默认行为。

-N

在标识符周围包含双引号。这是默认行为。

-o

为每个表转储对象标识符(OID)。

-s

只转储模式(定义),不转储数据。

-t table

只转储 table 的数据。

-u

使用密码认证。提示输入用户名和密码。

-v

指定详细模式

-x

不转储 ACL(grant/revoke 命令)和表所有权信息。

pg_dump 还接受下列用于连接参数的命令行参数:

-h host

指定运行 postmaster 的机器的主机名。默认使用本地 Unix 域套接字而不是 IP 连接。。

-p port

指定 postmaster 正在监听连接的 Internet TCP/IP 端口,或本地 Unix 域套接字文件扩展名。端口号默认为 5432,或 PGPORT 环境变量的值(如果已设置)。

-u

使用密码认证。提示输入 username 和 password。

输出

pg_dump 会创建一个文件或写入 stdout。

Connection to database 'template1' failed. connectDB() failed: Is the postmaster running and accepting connections at 'UNIX Socket' on port 'port'?

pg_dump 无法连接到指定主机和端口上的 postmaster 进程。如果你看到这条消息,请确保 postmaster 运行在正确的主机上,并且你指定了正确的端口。如果你的站点使用认证系统,请确保你已获得所需的认证凭据。

Connection to database 'dbname' failed. FATAL 1: SetUserId: user 'username' is not in 'pg_shadow'

你在关系 pg_shadow 中没有有效的条目,将不被允许访问 Postgres。请联系你的 Postgres 管理员。

dumpSequence(table): SELECT failed

你没有读取该数据库的权限。请联系你的 Postgres 站点管理员。

注意

pg_dump 内部执行 SELECT 语句。如果在运行 pg_dump 时遇到问题,请确保你能够使用例如 psql 从数据库中选择信息。

描述

pg_dump 是一个把 Postgres 数据库转储为包含查询命令的脚本文件的工具。脚本文件为文本格式,可用于重建数据库,甚至是在其他机器和其他架构上。pg_dump 会产生重新生成所有用户定义类型、函数、表、索引、聚合和操作符所需的查询。此外,所有数据都以文本格式复制出来,因此既可以方便地重新复制进去,也可以导入编辑工具。

pg_dump 可用于转储数据库的内容,以便从一个 Postgres 安装迁移到另一个安装。运行 pg_dump 之后,应当检查输出脚本文件中是否有任何警告,尤其是考虑到下面列出的限制。

注意

pg_dump 有一些限制。这些限制大多源于难以从系统目录中抽取某些元信息。

  • pg_dump 不理解部分索引。原因同上;部分索引谓词是以计划形式存储的。

  • pg_dump 不处理大对象。大对象会被忽略,必须手工处理。

  • 在进行只转储数据的转储时,pg_dump 会在插入数据之前发出禁用用户表上触发器的查询,并在数据插入完成后发出重新启用它们的查询。如果恢复在中途中止,系统目录可能会处于错误状态。

用法

要转储一个与用户同名的数据库:

% pg_dump > db.out
   

要重新装载这个数据库:

% psql -e database < db.out
   

提交更正

译文有误、术语不当或页面显示问题,请到译文仓库 pgsty/pgdoc 报告译文问题。 英文原文本身的问题,请在当前版本的对应页面向上游反馈;上游不再修订已结束维护的版本。