pg_dumpall

名称

pg_dumpall —抽出所有 Postgres 数据库到脚本文件中。

语法

pg_dumpall
pg_dumpall [ -h host ] [ -p port ] [ -a ] [ -d ] [ -D ] [ -O ] [ -s ] [ -u ] [ -v ] [ -x ]

输入

pg_dumpall 接受下面的命令行参数:
-a
只输出数据,不输出表结构(定义).
-d
将数据输出为合适的插入字串.
-D
将数据输出为带字段名的插入(语句).
-n
除必须的以外,禁用标识符周围的双引号.如果标识符有保留字,这样做可能会在装载输出的数据时引起麻烦.
-o
为每个表输出对象标识(OID).
-s
只输出表结构(定义),不输出数据.
-u
使用口令认证.提示输入用户名和口令.
-v
声明冗余模式
-x
避免输出 ACL(赋予/撤消 命令)和表的所有者关系信息.
pg_dumpall 还接受下面的命令行参数用于联接参数:
 
-h host
声明 postmaster 运行的机器的主机名.缺省的使用一个本地Unix 主控套接字而不是一个 IP 联接.
-p port
声明 postmaster 在侦听联接的TCP/IP 端口号或一个本地的Unix主控套接字文件句柄.缺省的端口号是5432,或者是环境变量 PGPORT 的值(如果存在的话).
-u
使用口令认证.提示输入 usernamepassword.

输出

pg_dumpall 将创建一个文件或输出到(标准输出) stdout
 
Connection to database 'template1' failed. connectDB() failed: Is the postmaster running and accepting connections at 'UNIX Socket' on port 'port'?
pg_dumpall 不能与指定的主机和端口号上的 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_dumpall 内部使用了 SELECT 语句.如果你运行 pg_dumpall 出现了问题,,确认你可以使用像 psql 这样的工具从数据库中选择数据.

描述

pg_dumpall 是一个用于将所有 Postgres 数据库输出到一个文件中去的应用程序.它同时还输出全局表 pg_shadow .pg_dumpall 里包含一些语句可以在装载数据之前自动创建每一个输出的数据库.

pg_dumpall 拥有所有的 pg_dump 选项,但是 -f-tdbname 应该被忽略掉.

请参考 pg_dump 获取这些功能的更多信息.

用法

输出所有数据库:
% pg_dumpall > db.out
小技巧:你可以将大多数 pg_dump 的选项用于 pg_dumpall
重新装载这个数据库:
% psql -e template1 < db.out