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
- 使用口令认证.提示输入 username
和 password.
输出
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,-t和
dbname 应该被忽略掉.
请参考 pg_dump
获取这些功能的更多信息.
用法
输出所有数据库:
% pg_dumpall > db.out
小技巧:你可以将大多数 pg_dump
的选项用于 pg_dumpall.
重新装载这个数据库:
% psql -e template1 < db.out
小技巧:重新装载时,你可以使用大多数 psql
选项.