Man page - pg_dump(1)
Manual
PG_DUMP
NAMESYNOPSIS
DESCRIPTION 描 述
OPTIONS 选 项
ENVIRONMENT 环 境
DIAGNOSTICS 诊 断
NOTES 注 意
EXAMPLES 例 子
HISTORY 历 史
SEE ALSO 参 见
译 者
跋
NAME
pg_dump - 将 一 个 PostgreSQL数 据 库 抽 出 到 一 个 脚 本 文 件 或 者 其 它 归 档 文 件 中
SYNOPSIS
pg_dump [ option ... ] [ dbname ]
DESCRIPTION 描 述
pg_dump 是 一 个 用 于 备 份 PostgreSQL 数 据 库 的 工 具 。 它 甚 至 可 以 在 数 据 库 正 在 并 发 使 用 的 时 候 进 行 完 整 一 致 的 备 份 。 pg_dump 并 不 阻 塞 其 它 用 户 对 数 据 库 的 访 问 ( 读 或 者 写 ) 。
转 储 格 式 可 以 是 一 个 脚 本 或 者 归 档 文 件 。 这 个 脚 本 文 件 的 格 式 是 纯 文 本 , 它 包 含 许 多 SQL 命 令 , 这 些 SQL 命 令 可 以 用 于 重 建 该 数 据 库 并 将 之 恢 复 到 保 存 成 脚 本 的 时 候 的 状 态 。 要 恢 复 这 些 脚 本 , 使 用 psql (1)。 它 们 甚 至 可 以 用 于 在 其 它 机 器 甚 至 是 其 它 硬 件 体 系 的 机 器 上 重 建 该 数 据 库 , 通 过 对 脚 本 进 行 一 些 修 改 , 甚 至 可 以 在 其 它 SQL 数 据 库 产 品 上 重 建 该 数 据 库 。
另 外 , 还 有 候 选 的 归 档 文 件 格 式 可 以 和 pg_restore (1) 一 起 使 用 重 建 数 据 库 , 并 且 它 们 也 允 许 pg_restore (1) 对 恢 复 什 么 东 西 进 行 选 择 , 或 者 甚 至 是 在 恢 复 之 前 对 需 要 恢 复 的 条 目 进 行 重 新 排 序 。 归 档 文 件 也 是 设 计 成 可 以 跨 平 台 移 植 的 。
如 果 一 种 候 选 文 件 格 式 和 pg_restore (1) 结 合 , 那 么 pg_dump就 能 提 供 一 种 灵 活 的 归 档 和 传 输 机 制 。 pg_dump 可 以 用 于 备 份 整 个 数 据 库 , 然 后 就 可 以 使 用 pg_restore 检 查 这 个 归 档 和 /或 选 择 要 恢 复 的 数 据 库 部 分 。 最 灵 活 等 输 出 文 件 格 式 是 ‘‘custom(客 户 化 )’’ 格 式 ( -Fc ) 。 它 允 许 对 归 档 元 素 进 行 选 取 和 重 新 排 列 , 并 且 缺 省 时 是 压 缩 的 。 tar 格 式 ( -Ft) 不 是 压 缩 的 并 且 我 们 在 装 载 等 时 候 不 可 能 重 排 列 , 不 过 它 也 很 灵 活 ; 还 有 , 它 可 以 用 其 它 工 具 , 比 如 tar 处 理 。
在 运 行 pg_dump 的 时 候 , 我 们 应 该 检 查 输 出 , 看 看 是 否 有 任 何 警 告 存 在 ( 在 标 准 错 误 上 打 印 ) , 特 别 是 下 面 列 出 的 限 制 。
OPTIONS 选 项
下 面 的 命 令 行 参 数 用 于 控 制 输 出 格 式 。
|
dbname |
声 明 将 要 转 储 的 数 据 库 名 。 如 果 没 有 声 明 这 个 参 数 , 那 么 使 用 环 境 变 量 PGDATABASE。 如 果 那 个 环 境 变 量 也 没 声 明 , 那 么 用 发 起 连 接 的 用 户 名 。
|
-a |
--data-only
只 输 出 数 据 , 不 输 出 结 构 ( 表 定 义 ) 。
这 个 选 项 只 是 对 纯 文 本 格 式 有 意 义 。 对 于 其 它 格 式 , 你 可 以 在 调 用 pg_restore 的 时 候 声 明 选 项 。
|
-b |
--blobs
在 转 储 中 包 含 大 对 象 。
|
-c |
--clean
输 出 在 创 建 数 据 库 创 建 命 令 之 前 先 清 理 ( 删 除 ) 该 数 据 库 对 象 的 命 令 。
这 个 选 项 只 是 对 纯 文 本 格 式 有 意 义 。 对 于 其 它 格 式 , 你 可 以 在 调 用 pg_restore 的 时 候 声 明 选 项 。
|
-C |
--create
以 一 条 创 建 该 数 据 库 本 身 并 且 与 这 个 数 据 库 联 接 等 命 令 开 头 进 行 输 出 。 ( 如 果 是 这 种 形 式 的 脚 本 , 那 么 你 在 运 行 脚 本 之 前 和 哪 个 数 据 库 联 接 就 不 重 要 了 。 )
这 个 选 项 只 对 纯 文 本 格 式 有 意 义 。 对 于 其 它 格 式 , 你 可 以 在 调 用 pg_restore 的 时 候 声 明 该 选 项 。
|
-d |
--inserts
将 数 据 输 出 为 的 INSERT 命 令 ( 而 不 是 COPY ) 。 这 样 会 导 致 恢 复 非 常 缓 慢 。 但 却 令 归 档 更 容 易 移 植 到 其 它 SQL 数 据 库 。
|
-D |
--column-inserts
--attribute-inserts
把 数 据 转 储 为 带 有 明 确 字 段 名 的 INSERT 命 令 。 ( INSERT INTO table ( column , ...) VALUES ...) 。 这 样 会 导 致 恢 复 非 常 缓 慢 , 但 是 如 果 你 想 重 新 排 列 字 段 的 顺 序 , 那 么 它 是 必 须 的 。
-f
file
--file=
file
把 输 出 发 往 指 定 的 文 件 。 如 果 忽 略 这 些 , 则 使 用 标 准 输 出 。
-F
format
--format=
format
选 择 输 出 的 格 式 。 format可 以 是 下 列 之 一 :
|
p |
输 出 纯 文 本 SQL脚 本 文 件 ( 缺 省 )
|
t |
输 出 适 合 输 入 到 pg_restore 里 的 tar归 档 文 件 。 使 用 这 个 归 档 允 许 在 恢 复 数 据 库 时 重 新 排 序 和 /或 把 表 结 构 排 除 在 外 。 同 时 也 可 能 可 以 在 恢 复 的 时 候 限 制 对 哪 些 数 据 进 行 恢 复 。
|
c |
输 出 适 于 给 pg_restore 用 的 客 户 化 归 档 。 这 是 最 灵 活 的 格 式 , 它 允 许 对 装 载 的 数 据 和 纲 要 元 素 进 行 重 新 排 列 。 这 个 格 式 缺 省 的 时 候 是 压 缩 的 。
|
-i |
--ignore-version
忽 略 在 pg_dump 和 数 据 库 服 务 器 之 间 的 版 本 差 别 。
pg_dump 可 以 处 理 来 自 以 前 版 本 的 PostgreSQL 的 数 据 库 , 但 是 太 老 的 版 本 则 不 被 支 持 了 ( 目 前 是 支 持 到 7.0) 。 如 果 你 需 要 跨 越 版 本 检 查 时 才 使 用 这 个 选 项 ( 而 且 如 pg_dump 失 效 , 别 说 我 没 警 告 你 ) 。
-n
namespace
--schema=
schema
只 转 储 schema 的 内 容 。 如 果 没 有 声 明 这 个 选 项 , 所 有 目 标 数 据 库 中 的 非 系 统 模 式 都 会 被 转 储 出 来 。
Note: 注 意 : 在 这 个 模 式 里 , pg_dump 并 不 试 图 转 储 任 何 其 它 选 定 模 式 可 能 依 赖 的 数 据 库 对 象 。 因 此 , 系 统 不 保 证 单 一 的 一 个 模 式 的 转 储 就 可 以 成 功 地 恢 复 到 一 个 干 净 的 数 据 库 中 去 。
|
-o |
||
|
--oids |
为 每 个 表 都 输 出 对 象 标 识 ( OID) 。 如 果 你 的 应 用 在 某 种 程 度 上 引 用 了 OID字 段 的 话 , ( 比 如 , 在 外 键 约 束 中 用 到 ) 。 那 么 使 用 这 个 选 项 。 否 则 , 不 应 该 使 用 这 个 选 项 。
|
-O |
--no-owner
不 把 对 象 的 所 有 权 设 置 为 对 应 源 数 据 库 。 By default, pg_dump issues SET SESSION AUTHORIZATION statements to set ownership of created schema elements. These statements will fail when the script is run unless it is started by a superuser (or the same user that owns all of the objects in the script). To make a script that can be restored by any user, but will give that user ownership of all the objects, specify -O .
这 个 选 项 只 是 对 纯 文 本 格 式 有 意 义 。 对 于 其 它 格 式 , 在 你 调 用 pg_restore 的 时 候 你 可 以 声 明 该 选 项 。
|
-R |
--no-reconnect
这 个 选 项 已 经 过 时 , 但 是 出 于 向 下 兼 容 的 考 虑 , 仍 然 接 受 这 个 选 项 。
|
-s |
--schema-only
只 输 出 表 纲 要 ( 定 义 ) , 不 输 出 数 据 。
-S
username
--superuser=
username
声 明 关 闭 触 发 器 时 需 要 用 到 的 超 级 用 户 名 。 它 只 有 使 用 了 --disable-triggers 的 时 候 才 有 关 系 。 ( 通 常 , 我 们 最 好 不 要 输 入 这 个 参 数 , 而 是 用 超 级 用 户 启 动 生 成 的 脚 本 。 )
-t
table
--table=
table
只 输 出 表 table 的 数 据 。 很 可 能 是 在 不 同 模 式 里 面 有 多 个 同 名 表 ; 如 果 这 样 , 那 么 所 有 匹 配 的 表 都 将 被 转 储 出 来 。 同 时 声 明 --schema 和 --table 则 只 选 择 一 个 表 。
Note:
注 意 : 在 这 个 模
式 里 , pg_dump 并 不
试 图 转 储 任 何
其 它 选 定 表 可
能 依 赖 的 数 据
库 对 象 。 因 此
, 系 统 不 保 证
单 一 的 一 个 表
的 转 储 就 可 以
成 功 地 恢 复 到
一 个 干 净 的 数
据 库 中 去 。
|
-v |
--verbose
声 明 冗 余 模 式 。 这 样 将 令 pg_dump 在 标 准 错 误 上 打 印 进 度 信 息 。
|
-x |
--no-privileges
--no-acl
避 免 输 出 ACL( 赋 予 /撤 消 命 令 ) 和 表 的 所 有 者 关 系 信 息 。
-X
use-set-session-authorization
--use-set-session-authorization
这 个 选 项 废 弃 了 , 保 留 它 是 为 了 向 下 兼 容 。 pg_dump 现 在 表 现 得 总 是 想 正 式 选 取 了 这 个 选 项 一 样 。
-X disable-triggers
--disable-triggers
这 个 选 项 只 是 和 创 建 仅 有 数 据 的 转 储 相 关 。 它 告 诉 pg_dump 包 含 在 恢 复 数 据 时 , 临 时 关 闭 目 标 表 上 面 的 触 发 器 的 命 令 。 如 果 你 在 表 上 有 参 考 完 整 性 检 查 或 者 其 它 触 发 器 , 而 恢 复 数 据 的 时 候 你 不 想 重 载 他 们 , 那 么 你 就 应 该 使 用 这 个 选 项 。
目 前 , 为 --disable-triggers 发 出 的 命 令 必 须 用 超 级 用 户 来 做 。 因 此 , 你 应 该 同 时 用 -S 声 明 一 个 超 级 用 户 名 , 或 者 最 好 是 用 一 个 超 级 用 户 的 身 份 来 启 动 这 个 生 成 的 脚 本 。
这 个 选 项 只 对 纯 文 本 格 式 有 意 义 。 对 于 其 它 格 式 , 你 可 以 在 调 用 pg_restore 的 时 候 声 明 这 个 选 项 。
-Z
0..9
--compress=
0..9
声 明 在 那 些 支 持 压 缩 的 格 式 中 使 用 的 压 缩 级 别 。 ( 目 前 只 有 客 户 化 格 式 支 持 压 缩 ) 。
下
面 的 命 令 行 参
数 控 制 数 据 库
为 联 接 参 数 。
-h
host
--host=
host
声 明 运 行 服 务 器 的 机 器 的 主 机 名 。 如 果 数 值 以 斜 扛 开 头 , 则 它 被 用 做 到 Unix 域 套 接 字 的 路 径 。 缺 省 是 从 PGHOST 环 境 变 量 中 取 得 的 , 如 果 设 置 了 这 个 环 境 变 量 的 话 , 否 则 , 尝 试 一 个 Unix 域 套 接 字 连 接 。
-p
port
--port=
port
声 明 服 务 器 正 在 侦 听 并 等 待 联 接 的 TCP 端 口 或 本 地 Unix 主 控 套 接 字 文 件 句 柄 。 缺 省 时 使 用 环 境 变 量 PGPORT 的 值 ( 如 果 存 在 ) , 或 者 是 编 译 时 的 缺 省 值 。
-U username
以 给 出 用 户 身 分 联 接 。
|
-W |
强 制 口 令 提 示 。 如 果 服 务 器 需 要 口 令 认 证 , 那 么 这 个 动 作 应 该 自 动 发 生 。
ENVIRONMENT 环 境
PGDATABASE
|
PGHOST |
||
|
PGPORT |
||
|
PGUSER |
缺 省 连 接 参 数
DIAGNOSTICS 诊 断
pg_dump 在 内 部 使 用 SELECT 语 句 。 如 果 你 运 行 pg_dump 时 碰 到 问 题 , 确 认 你 能 够 使 用 象 psql (1) 这 样 的 程 序 从 数 据 库 选 取 信 息 。
NOTES 注 意
如 果 你 的 数 据 库 给 template1数 据 库 增 加 了 任 何 你 自 己 的 东 西 , 那 么 请 注 意 把 pg_dump 的 输 出 恢 复 到 一 个 真 正 空 的 数 据 库 中 ; 否 则 你 可 能 会 收 到 因 为 重 复 定 义 所 追 加 的 对 象 而 造 成 的 错 误 信 息 。 要 制 作 一 个 没 有 任 何 本 地 附 属 物 的 数 据 库 , 可 以 从 template0而 不 是 template1拷 贝 , 比 如 :
CREATE DATABASE foo WITH TEMPLATE template0;
pg_dump 有 几 个 限 制 :
|
• |
在 转 储 一 个 表 或 者 作 为 纯 文 本 转 储 时 , pg_dump 无 法 操 作 大 对 象 。 大 对 象 必 须 整 数 据 库 地 使 用 非 文 本 归 档 格 式 之 一 进 行 转 储 。
|
• |
在 进 行 纯 数 据 转 储 时 , 并 且 使 用 了 选 项 --disable-triggers 的 时 候 , pg_dump 发 出 一 些 查 询 先 关 闭 在 用 户 表 上 面 的 触 发 器 , 然 后 插 入 数 据 , 数 据 插 入 完 成 后 再 发 出 查 询 打 开 触 发 器 。 如 果 恢 复 动 作 在 中 间 停 止 , 那 么 系 统 表 可 能 就 会 处 于 一 种 错 误 状 态 。
tar 归 档 的 成 员 的 大 小 限 制 于 8 GB。 ( 这 个 限 制 是 tar 文 件 格 式 的 固 有 限 制 。 ) 因 此 这 个 格 式 无 法 用 于 那 些 一 个 表 的 大 小 超 过 这 个 尺 寸 的 原 文 表 现 。 tar 归 档 和 任 何 其 它 输 出 格 式 的 总 大 小 是 不 受 限 制 的 , 只 是 可 能 会 又 操 作 系 统 的 限 制 。
恢 复 完 之 后 , 我 们 建 议 在 每 个 已 恢 复 的 对 象 上 运 行 ANALYZE。 这 样 优 化 器 就 可 以 得 到 有 用 的 统 计 。
EXAMPLES 例 子
转 储 一 个 数 据 库 :
$ pg_dump mydb > db.out
重 载 这 个 数 据 库 :
$ psql -d database -f db.out
输 出 一 个 叫 mydb 的 包 含 BLOB 的 数 据 库 到 一 个 tar 文 件 :
$ pg_dump -Ft -b mydb > db.tar
把 这 个 数 据 库 ( 连 同 BLOB) 一 起 恢 复 到 一 个 现 有 的 叫 newdb 的 数 据 库 :
$ pg_restore -d newdb db.tar
HISTORY 历 史
pg_dump 工 具 最 早 出 现 在 Postgres95 版 本 0.02。 非 纯 文 本 输 出 格 式 在 PostgreSQL 版 本 7.1 时 引 入 。
SEE ALSO 参 见
pg_dumpall (1), pg_restore (1), psql (1)
译 者
Postgresql 中 文 网 站 何 伟 平 <laser@pgsqldb.org>
跋
本
页 面 中 文 版 由
中 文 man 手 册 页 计
划 提 供 。
中 文 man 手 册 页 计
划 :
https://github.com/man-pages-zh/manpages-zh