Provided by: manpages-zh_1.5-1_all bug

NAME

       pg_dumpall - 抽出一个 PostgreSQL 数据库集群到脚本文件中

SYNOPSIS

       pg_dumpall [ option... ]

DESCRIPTION述
       pg_dumpall   是一个用于写出("转储")一个数据库集群里的所有  PostgreSQL
       数据库到一个脚本文件的工具。     该脚本文件包含可以用于作为     psql(1)
       的输入恢复数据库的SQL命令。        它通过对数据库集群里的每个数据库调用
       pg_dump(1) 实现这个功能。 pg_dumpall 还转储出所有数据库公用的全局对象。
       (pg_dump(1)                                       并不保存这些对象。)
       这些信息目前包括数据库用户和组,以及适用于整个数据库的访问权限。

        因此,pg_dumpall                    是备份你的数据库的一体化解决方案。
       但是请注意它的局限性:它无法转储"大对象",因为                  pg_dump
       无法把这样的对象转储到纯文本文件中。如果你的数据库里有大对象,
       那么你应该使用 pg_dump 的非文本输出格式之一转储它们。

        因为                 pg_dumpall                 从所有数据库中读取表,
       所以你很可能需要以数据库超级用户的身份联接,这样才能生成完整的转储。
       同样,你也需要超级用户的权限执行保存下来的脚本,这些才能增加用户和组,
       以及创建数据库。

       SQL脚本将写出到标准输出。你应该使用合适的                         shell
       操作符把它重定向到文件。

       pg_dumpall                       需要和                      PostgreSQL
       服务器连接多次,可能每次都问你口令。这种情况下写一个      $HOME/.pgpass
       可能会比较方便。

OPTIONS项
        下列命令行参数用于控制输出格式:

       -a

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

       -c

       --clean
               包括那些重建之前清理(删除)数据库对象的SQL命令。

       -d

       --inserts
               把数据当作                INSERT               命令输出(而不是
              COPY)。这样将令恢复过程非常缓慢,  但是会令输出更容易移植到其他
              SQL 数据库包中。

       -D

       --column-inserts

       --attribute-inserts
               把数据以某种带着明确字段名(INSERT  INTO  table   (column, ...)
              VALUES         ...)的         INSERT         命令形式转储出来。
              这样会令恢复非常慢,但是如果需要重排字段顺序就是必须的。

       -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
               避免转储访问权限(授权/撤销命令)。

        下面的命令行参数控制数据库连接参数。

       -h host
               声明数据库服务器所运行的机器的主机名。
              如果数值以斜扛开头,那么就把它用做     Unix     域套接字的目录。
              缺省是从 PGHOST 环境变量里拿来的(如果设置了),  否则使用  Unix
              域套接字。

       -p port
               声明服务器监听的  TCP 端口号或者 Unix 域套接字文件扩展。 缺省是
              PGPORT 环境变量(如果设置了), 或者是编译时的缺省。

       -U username
               以给定用户身分联接。

       -W
              强制口令提示。如果服务器需要口令认证,那么这个动作应该自动发生。

ENVIRONMENT境
       PGHOST

       PGPORT

       PGUSER  缺省连接参数。

NOTES意
        因为   pg_dumpall   内部调用   pg_dump,所以,一些诊断信息    可以参考
       pg_dump。

        恢复完之后,我们建议在每个已恢复的对象上运行                 ANALYZE。
       这样优化器就可以得到有用的统计。    你也可以用    vacuumdb    -a     -z
       清理所有数据库。

EXAMPLES子
        转储所有数据库:

       $ pg_dumpall > db.out

        重新载入这个数据库:

       $ psql -f db.out template1

        (在这里你和哪个数据库联接并不重要,因为                    pg_dumpall
       创建的脚本文件将包含合适的命令用于创建和联接保存的数据库。)

SEE ALSO见
       pg_dump(1). Check there for details on possible error conditions.

者
       Postgresql  <laser@pgsqldb.org>