pg_dumpall
pg_dumpall — 把所有 Postgres 数据库抽取到一个脚本文件
大纲
pg_dumpall pg_dumpall [ -hhost] [ -pport] [ -a ] [ -d ] [ -D ] [ -o ] [ -s ] [ -u ] [ -v ] [ -z ]
输入
pg_dumpall 接受下列命令行参数:
- -a
只转储数据,不转储模式(定义)。
- -d
把数据转储为正确的插入字符串。
- -D
把数据转储为带属性名的插入
- -n
除非绝对必要,抑制标识符两边的双引号。如果有保留字被用作标识符,加载这些转储数据时可能出问题。
- -o
转储每个表的对象标识符(OID)。
- -s
只转储模式(定义),不转储数据。
- -u
使用口令认证。提示输入用户名和口令。
- -v
指定详细模式
- -z
包含 ACL(grant/revoke 命令)和表所有权信息。
pg_dumpall 还接受下列用于连接参数的命令行参数:
- -h
host 指定 postmaster 所在机器的主机名。默认使用本地 Unix 域套接字而不是 IP 连接。
- -p
port 指定 postmaster 正在监听连接的 Internet 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 -o > db.out
提示
可以为 pg_dumpall 使用大多数 pg_dump 选项。
要重新加载这个数据库:
psql -e template1 < db.out
提示
重新加载时可以使用大多数 psql 选项。