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

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 / 6.5 / 6.4
历史版本PostgreSQL 7.4 已于 2010 年 10 月结束社区维护,本页译文保留供仍在使用旧版本的读者参考。新系统请看当前版本。

pg_dumpall

pg_dumpall — 将一个PostgreSQL数据库集簇转储为脚本文件

大纲

pg_dumpall [option...]

描述

pg_dumpall是一个实用程序,用于写出(“转储”)一个集簇中的所有PostgreSQL数据库到一个脚本文件中。该脚本文件包含SQL命令,可作为psql的输入来恢复这些数据库。它通过对集簇中的每个数据库调用pg_dump来实现这一点。pg_dumpall还会转储所有数据库共有的全局对象。 (pg_dump不会保存这些对象。) 目前包括数据库用户和组,以及适用于整个数据库的访问权限的信息。

因此,pg_dumpall是一个用于备份数据库的一体化 解决方案。但要注意一个局限:它无法转储“大对象”,因为 pg_dump无法把这类对象转储到文本文件中。 如果你的数据库包含大对象,应当使用pg_dump的 某种非文本输出模式来转储它们。

由于pg_dumpall会读取所有数据库中的表,因此通常必须以数据库超级用户身份连接,才能生成完整的转储。另外,要执行保存的脚本,也需要具备超级用户权限,这样才能添加用户和组并创建数据库。

SQL 脚本将写入标准输出。应使用 shell 操作符将其重定向到文件。

pg_dumpall 需要连接 PostgreSQL 服务器多次,每次都可能 询问口令。这种情况下有一个 $HOME/.pgpass 文件会很 方便。

选项

下列命令行选项用来控制输出的内容和 格式。

-a
--data-only

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

-c
--clean

包含用于在重新创建数据库之前清理(删除)数据库的 SQL 命令。

-d
--inserts

把数据转储为 INSERT 命令(而不是 COPY)。这会使恢复非常 慢,但它让输出更容易移植到其他 SQL 数据库 管理系统。

-D
--column-inserts
--attribute-inserts

把数据转储为带显式 列名的 INSERT 命令( INSERT INTO table (column, ...) VALUES ...)。这会使恢复非常慢, 但如果想重新排列列的顺序, 这是必要的。

-g
--globals-only

只转储全局对象(用户和组),不转储数据库。

-i
--ignore-version

忽略pg_dumpall与数据库服务器之间的版本不匹配。

pg_dumpall可以处理PostgreSQL以前版本的数据库,但非常老的版本不再受支持(目前是 7.0 之前)。如果需要跳过版本检查,可使用此选项(如果pg_dumpall随后失败,别怪我们没有提醒你)。

-o
--oids

转储每个 表的对象标识符( OID)。如果你的应用以某种方式 引用 OID 列(例如在 外键约束中),请使用这个选项。 否则不应使用这个选项。

-s
--schema-only

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

-v
--verbose

指定详细模式。这会使 pg_dumpall 向标准 错误打印进度消息。

-x
--no-privileges
--no-acl

不转储访问权限(GRANT/REVOKE 命令)。

下列命令行选项控制数据库连接参数。

-h host

指定运行数据库服务器的机器的主机名。如果该值以斜杠开头,则将其用作 Unix 域套接字的目录。默认值取自 PGHOST 环境变量(如果已设置);否则会尝试使用 Unix 域套接字连接。

-p port

指定服务器监听连接的 TCP 端口,或本地 Unix 域套接字文件扩展名。默认值取自PGPORT环境变量(如果已设置),否则使用编译时默认值。

-U username

以给定用户身份连接。

-W

强制提示输入密码。如果服务器要求密码认证,这应当会自动发生。

环境

PGHOST
PGPORT
PGUSER

默认连接参数

注解

由于pg_dumpall在内部调用pg_dump,因此某些诊断消息会提到pg_dump。

恢复完成后,最好对每个数据库运行ANALYZE,以便优化器获得有用的统计信息。也可以运行vacuumdb -a -z来分析所有数据库。

示例

要转储所有数据库:

$ pg_dumpall > db.out

要从此文件重新装载数据库,可以使用:

$ psql -f db.out template1

(这里连接哪个数据库并不重要,因为 pg_dumpall 创建的脚本文件会包含适当的命令,用于创建并连接到已保存的数据库。)

另见

有关可能出现的错误情况,请参见pg_dump。

提交更正

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