.\" auto-generated by docbook2man-spec $Revision: 1.1 $ .TH "PG_DUMPALL" "1" "2003-11-02" "Application" "PostgreSQL Client Applications" .SH NAME pg_dumpall \- 抽出一个 PostgreSQL 数据库集群到脚本文件中 .SH SYNOPSIS .sp \fBpg_dumpall\fR\fR [ \fR\fB\fIoption\fB\fR...\fB \fR\fR]\fR .SH "DESCRIPTION 描述" .PP \fBpg_dumpall\fR 是一个用于写出("转储")一个数据库集群里的所有 PostgreSQL 数据库到一个脚本文件的工具。 该脚本文件包含可以用于作为 \fBpsql\fR(1) 的输入恢复数据库的SQL命令。 它通过对数据库集群里的每个数据库调用 \fBpg_dump\fR(1) 实现这个功能。 \fBpg_dumpall\fR 还转储出所有数据库公用的全局对象。 (\fBpg_dump\fR(1) 并不保存这些对象。) 这些信息目前包括数据库用户和组,以及适用于整个数据库的访问权限。 .PP 因此,\fBpg_dumpall\fR 是备份你的数据库的一体化解决方案。 但是请注意它的局限性:它无法转储"大对象",因为 \fBpg_dump\fR 无法把这样的对象转储到纯文本文件中。如果你的数据库里有大对象, 那么你应该使用 \fBpg_dump\fR 的非文本输出格式之一转储它们。 .PP 因为 pg_dumpall 从所有数据库中读取表, 所以你很可能需要以数据库超级用户的身份联接,这样才能生成完整的转储。 同样,你也需要超级用户的权限执行保存下来的脚本,这些才能增加用户和组, 以及创建数据库。 .PP SQL脚本将写出到标准输出。你应该使用合适的 shell 操作符把它重定向到文件。 .PP \fBpg_dumpall\fR 需要和 PostgreSQL 服务器连接多次,可能每次都问你口令。这种情况下写一个 \fI$HOME/.pgpass\fR 可能会比较方便。 .SH "OPTIONS 选项" .PP 下列命令行参数用于控制输出格式: .TP \fB-a\fR .TP \fB--data-only\fR 只转储数据,不转储模式(数据定义)。 .TP \fB-c\fR .TP \fB--clean\fR 包括那些重建之前清理(删除)数据库对象的SQL命令。 .TP \fB-d\fR .TP \fB--inserts\fR 把数据当作 INSERT 命令输出(而不是 COPY)。这样将令恢复过程非常缓慢, 但是会令输出更容易移植到其他 SQL 数据库包中。 .TP \fB-D\fR .TP \fB--column-inserts\fR .TP \fB--attribute-inserts\fR 把数据以某种带着明确字段名(INSERT INTO \fItable\fR (\fIcolumn\fR, ...) VALUES ...)的 \fBINSERT\fR 命令形式转储出来。 这样会令恢复非常慢,但是如果需要重排字段顺序就是必须的。 .TP \fB-g\fR .TP \fB--globals-only\fR 只转储全局对象(用户和组),而不转储数据库。 .TP \fB-i\fR .TP \fB--ignore-version\fR 忽略 pg_dumpall 和数据库服务器之间的版本差别。 \fBpg_dumpall\fR 可以处理来自以前版本的 PostgreSQL 的数据库,但是太老的数据库就不再支持了(目前到 7.0)。 如果你需要覆盖版本检查,那么可以使用这个选项(如果 pg_dumpall 失败了,可别说我们没警告你。) .TP \fB-o\fR .TP \fB--oids\fR 为每个表转储对象标识符(OID)。 如果你的应用在某种角度引用了 OID 字段,那么使用这个选项 (比如,在外键约束里)。否则,不应该使用这个选项。 .TP \fB-s\fR .TP \fB--schema-only\fR 只转储模式(数据定义),不转储数据。 .TP \fB-v\fR .TP \fB--verbose\fR 声明冗余模式。这样将令 pg_dumpall 向标准错误打印进度信息。 .TP \fB-x\fR .TP \fB--no-privileges\fR .TP \fB--no-acl\fR 避免转储访问权限(授权/撤销命令)。 .PP .PP 下面的命令行参数控制数据库连接参数。 .TP \fB-h \fIhost\fB\fR 声明数据库服务器所运行的机器的主机名。 如果数值以斜扛开头,那么就把它用做 Unix 域套接字的目录。 缺省是从 PGHOST 环境变量里拿来的(如果设置了), 否则使用 Unix 域套接字。 .TP \fB-p \fIport\fB\fR 声明服务器监听的 TCP 端口号或者 Unix 域套接字文件扩展。 缺省是 PGPORT 环境变量(如果设置了), 或者是编译时的缺省。 .TP \fB-U \fIusername\fB\fR 以给定用户身分联接。 .TP \fB-W\fR 强制口令提示。如果服务器需要口令认证,那么这个动作应该自动发生。 .PP .SH "ENVIRONMENT 环境" .TP \fBPGHOST\fR .TP \fBPGPORT\fR .TP \fBPGUSER\fR 缺省连接参数。 .SH "NOTES 注意" .PP 因为 pg_dumpall 内部调用 pg_dump,所以,一些诊断信息 可以参考 pg_dump。 .PP 恢复完之后,我们建议在每个已恢复的对象上运行 \fBANALYZE\fR。 这样优化器就可以得到有用的统计。 你也可以用 \fBvacuumdb -a -z\fR 清理所有数据库。 .SH "EXAMPLES 例子" .PP 转储所有数据库: .sp .nf $ \fBpg_dumpall > db.out\fR .sp .fi .PP 重新载入这个数据库: .sp .nf $ \fBpsql -f db.out template1\fR .sp .fi (在这里你和哪个数据库联接并不重要,因为 pg_dumpall 创建的脚本文件将包含合适的命令用于创建和联接保存的数据库。) .SH "SEE ALSO 参见" .PP \fBpg_dump\fR(1). Check there for details on possible error conditions. .SH "译者" .B Postgresql 中文网站 .B 何伟平 .SH "跋" .br 本页面中文版由中文 man 手册页计划提供。 .br 中文 man 手册页计划:\fBhttps://github.com/man-pages-zh/manpages-zh\fR