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