NAME
pg_restore - 從 一 個 由 pg_dump 創 建 的 備 份 文 件 中 恢 復 PostgreSQL 數 據 庫 。
SYNOPSIS
pg_restore [ option... ] [ filename ]
DESCRIPTION 描 述
pg_restore 是 一 種 用 於 恢 復 由 pg_dump(1) 創 建 的 任 何 非 純 文 本 輸 出 格 式 中 的 PostgreSQL 數 據 庫 的 應 用 。 它 將 發 出 必 要 的 命 令 來 重 新 構 造 數 據 庫 , 以 便 於 把 它 恢 復 成 保 存 它 的 時 候 的 樣 子 。 歸 檔 ( 備 份 ) 文 件 還 允 許 pg_restore 有 選 擇 地 進 行 恢 復 , 甚 至 在 恢 復 前 重 新 排 列 條 目 的 順 序 。 歸 檔 的 文 件 設 計 成 可 以 在 不 同 的 硬 件 體 系 之 間 移 植 。
pg_restore 可 以 以 兩 種 模 式 操 作 : 如 果 聲 明 瞭 數 據 庫 名 字 , 那 麼 歸 檔 是 直 接 恢 復 到 數 據 庫 裏 。 大 對 象 只 能 用 直 接 數 據 庫 聯 接 進 行 恢 復 。 否 則 , 先 創 建 一 個 包 含 重 建 數 據 庫 所 必 須 的 SQL 命 令 的 腳 本 ( 並 且 寫 入 到 一 個 文 件 或 者 標 準 輸 出 ) , 類 似 pg_dump 輸 出 純 文 本 格 式 的 時 候 創 建 的 那 種 腳 本 。 因 此 , 一 些 控 制 腳 本 輸 出 的 選 項 就 是 摹 擬 pg_dump 的 操 作 。 顯 然 , pg_restore 無 法 恢 復 那 些 不 存 在 歸 檔 文 件 中 的 信 息 ; 比 如 , 如 果 歸 檔 是 用 "把 數 據 轉 儲 爲 INSERT命 令 "選 項 製 作 的 , 那 麼 pg_restore 將 不 能 使 用 COPY 語 句 裝 載 數 據 。
OPTIONS 選 項
pg_restore
接 受 下 列 命 令
行 參 數 。
filename 聲 明 要 恢 復
的 備 份 文 件 的
位 置 。 如 果 沒
有 聲 明 , 則 使
用 標 準 輸 入 。
-a |
--data-only 只 恢 復 數 據 , 而 不 恢 復 表 模 式 ( 數 據 定 義 ) 。
-c |
--clean 創 建 數 據 庫 對 象 前 先 清 理 ( 刪 除 ) 它 們 。
-C |
--create 在
恢 復 數 據 庫 之
前 先 創 建 它 。
( 如 果 出 現 了
這 個 選 項 , 和
-d 在 一 起 的 數
據 庫 名 只 是 用
於 發 出 最 初 的 CREATE
DATABASE 命 令 。 所 有
數 據 都 恢 復 到
名 字 出 現 在 歸
檔 中 的 數 據 庫
中 去 。 )
-d dbname
--dbname=dbname 與 數 據
庫 dbname 聯 接 並 且 直
接 恢 復 到 該 數
據 庫 中 。
-f filename
--file=filename 聲 明 生
成 的 腳 本 的 輸
出 文 件 , 或 者
出 現 -l 選 項 時
用 於 列 表 的 文
件 , 缺 省 是 標
準 輸 出 。
-F format
--format=format 聲 明 備
份 文 件 的 格 式
。 因 爲 pg_restore 會 自
動 判 斷 格 式 ,
所 以 如 果 聲 明
瞭 , 它 可 以 是
下 面 之 一 :
t 備 份 是 一 個 |
tar 歸 檔 。 使 用 這 個 格 式 允 許 在 恢 復 數 據 庫 的 時 候 |
重 新 排 序 和 /或 把 表 模 式 元 素 排 除 出 去 。 同 時 還 可 能 在 恢 復 的 時 候 限 制 裝 載 的 數 據 。
c 備 份 的 格 式 是 來 自 |
pg_dump 的 客 戶 化 格 式 。 這 是 最 靈 活 的 格 |
式 , 因 爲 它 允 許 重 新 對 數 據 排 序 , 也 允 許 重 載 表 模 式 元 素 。 缺 省 時 這 個 格 式 是 壓 縮 的 。
-i |
--ignore-version
忽 略 數 據 庫 版
本 檢 查 。
-I index
--index=index 只 恢 復 命
名 的 索 引 。
-l |
|||
--list 列 出 備 份 的 內 容 。 這 個 操 作 的 輸 出 可 以 用 |
-L 選 項 限 制 和 重 排 所 恢 復 的 |
項 目 。
-L list-file
--use-list=list-file 只 恢 復
在 list-file 裏 面 的 元
素 , 以 它 們 在
文 件 中 出 現 的
順 序 。 你 可 以
移 動 各 個 行 並
且 也 可 以 通 過
在 行 開 頭 放 ’;’
的 方 式 註 釋 。
( 見 下 文 獲 取
例 子 。 )
-N |
--orig-order 以 最 初 在 pg_dump 裏 生 成 的 轉 儲 順 序 恢 復 項 目 。 這 個 選 項 沒 有 什 麼 實 際 的 用 途 , 因 爲 pg_dump 會 以 自 己 方 便 的 順 序 生 成 項 , 這 個 順 序 不 可 能 是 恢 復 這 些 數 據 的 安 全 順 序 。 ( 這 個 順 序 不 是 項 最 後 在 歸 檔 的 內 容 列 表 中 列 出 的 順 序 。 ) 又 見 -r。
-o |
--oid-order 以 OID 順 序 恢 復 項 目 。 這 個 選 項 用 處 很 小 , 因 爲 OID 只 是 最 初 創 建 順 序 的 一 個 近 似 指 示 。 如 果 還 聲 明 瞭 -N, 那 麼 這 個 選 項 還 覆 蓋 它 。 又 見 -r。
-O |
--no-owner 不
要 輸 出 設 置 對
象 的 權 限 , 以
便 與 最 初 的 數
據 庫 匹 配 的 命
令 。 缺 省 時 ,
pg_restore 發 出 SET SESSION
AUTHORIZATION 語 句 設 置
創 建 出 來 的 模
式 元 素 的 所 有
者 權 限 。 如 果
最 初 的 數 據 庫
連 接 不 是 由 超
級 用 戶 ( 或 者
是 擁 有 所 有 創
建 出 來 的 對 象
的 同 一 個 用 戶
) 發 起 的 , 那
麼 這 些 語 句 將
失 敗 。 使 用 -O,
那 麼 任 何 用 戶
都 可 以 用 於 初
始 的 連 接 , 並
且 這 個 用 戶 將
擁 有 所 有 創 建
出 來 的 對 象 。
-P function-name(argtype [, ...])
--function=function-name(argtype [, ...])
只 恢 復 指 定 的
命 名 函 數 。 請
注 意 仔 細 拼 寫
函 數 名 及 其 參
數 , 應 該 和 轉
儲 的 內 容 列 表
中 的 完 全 一 樣
。
-r |
--rearrange 以 對 象 類 型 重 排 項 目 ( 這 個 發 生 在 以 -N 或 者 -o 排 序 之 後 ) 。 重 排 是 爲 了 給 出 最 大 可 能 的 性 能 。 如 果 沒 有 -N, -o, 和 -r, 那 麼 pg_restore 以 項 目 出 現 在 歸 檔 的 內 容 列 表 中 的 順 序 恢 復 他 們 , 或 者 按 照 他 們 在 list-file 裏 面 的 順 序 恢 復 他 們 — 假 如 給 出 了 -L 的 話 。 -o 和 -r 的 組 合 複 製 了 pg_dump 在 創 建 歸 檔 的 內 容 列 表 之 前 進 行 的 排 序 , 因 此 , 這 個 選 項 通 常 沒 必 要 聲 明 。
-R |
--no-reconnect 這 個 選 項 已 經 廢 棄 了 , 但 是 爲 了 保 持 向 下 兼 容 仍 然 接 受 。
-s |
--schema-only 只
恢 復 表 結 構 (
數 據 定 義 ) 。
不 恢 復 數 據 ,
序 列 值 將 重 置
。
-S username
--superuser=username 設 置 關
閉 觸 發 器 時 聲
明 超 級 用 戶 的
用 戶 名 。 只 有
在 設 置 了
--disable-triggers 的 時 候
纔 有 用 。
-t table
--table=table 只 恢 復 表
指 定 的 表 的 定
義 和 /或 數 據 。
-T trigger
--trigger=trigger 只 恢 復
指 定 的 觸 發 器
。
-v |
--verbose 聲 明 冗 餘 模 式 。
-x |
--no-privileges
--no-acl 避 免 ACL 的 恢
復 ( grant/revoke 命 令 )
。
-X use-set-session-authorization
--use-set-session-authorization 這 個
選 項 已 經 廢 棄
了 , 但 是 出 於
向 下 兼 容 , 仍
然 接 受 。 pg_restore 現
在 總 是 表 現 得
像 以 前 選 中 這
個 選 項 一 樣 。
-X disable-triggers
--disable-triggers 這 個 選 項
只 有 在 執 行 僅
恢 復 數 據 的 時
候 才 相 關 。 它
告 訴 pg_restore 在 裝 載
數 據 的 時 候 執
行 一 些 命 令 臨
時 關 閉 在 目 標
表 上 的 觸 發 器
。 如 果 你 在 表
上 有 完 整 性 檢
查 或 者 其 它 觸
發 器 , 而 你 又
不 希 望 在 裝 載
數 據 的 時 候 激
活 它 們 , 那 麼
可 以 使 用 這 個
選 項 。 目 前 ,
爲 --disable-triggers 發 出
的 命 令 必 須 以
超 級 用 戶 發 出
。 因 此 , 你 應
該 也 要 用 -S 聲 明
一 個 超 級 用 戶
名 , 或 者 更 好
是 設 置
--use-set-session-authorization 並 且
以 PostgreSQL 超 級 用 戶
身 份 運 行 pg_restore。
pg_restore
還 接 受 下 面 的
命 令 行 參 數 做
爲 聯 接 參 數 :
-h host
--host=host 聲 明 服 務
器 運 行 的 機 器
的 主 機 名 。 如
果 數 值 以 斜 扛
開 頭 , 那 麼 它
被 用 做 Unix 域 套 接
字 的 目 錄 。 缺
省 是 從 PGHOST 環 境 變
量 中 獲 取 的 (
如 果 設 置 了 )
, 否 則 將 嘗 試
進 行 Unix 域 套 接 字
。
-p port
--port=port 聲 明 服 務
器 偵 聽 的 TCP 端 口
或 者 本 地 的 Unix 域
套 接 字 文 件 擴
展 。 缺 省 是 環
境 變 量 PGPORT 的 值 (
如 果 設 置 了 的
話 ) , 否 則 就
說 編 譯 的 缺 省
。
-U username 以 給 出 用
戶 身 分 聯 接 。
-W 強 制 給 出 口 令 提 示 。 如 果 服 務 器 要 求 口 令 認 證 , 那 麼 這 個 應 該 自 動 發 生 。 |
ENVIRONMENT 環 境
PGHOST |
||
PGPORT |
||
PGUSER 缺 省 連 接 參 數 。 |
DIAGNOSTICS 診 斷
當 使 用 -d選 項 聲 明 瞭 直 接 數 據 庫 聯 接 時 , pg_restore 在 內 部 執 行 SQL 語 句 。 如 果 你 運 行 pg_restore 出 了 毛 病 , 請 確 保 你 能 用 類 似 psql(1) 這 樣 的 東 西 從 數 據 庫 中 選 取 信 息 。
NOTES 注 意
如 果 你 的 安 裝 給 template1數 據 庫 增 加 了 任 何 你 自 己 的 東 西 , 那 麼 請 注 意 把 pg_dump 的 輸 出 恢 復 到 一 個 真 正 空 的 數 據 庫 中 ; 否 則 你 可 能 會 收 到 因 爲 重 複 定 義 所 追 加 的 對 象 而 造 成 的 錯 誤 信 息 。 要 製 作 一 個 沒 有 任 何 本 地 附 屬 物 的 數 據 庫 , 可 以 從 template0而 不 是 template1拷 貝 , 比 如 :
CREATE DATABASE foo WITH TEMPLATE template0;
pg_restore 的 侷 限 在 下 面 列 出 。
• 當 向 一 個 已 經 存 在 的 表 恢 復 數 據 , 並 且 還 使 用 了 |
--disable-triggers 選 項 |
時 , pg_restore 在 插 入 數 據 前 放 出 一 些 查 詢 關 閉 用 戶 表 上 的 觸 發 器 , 在 數 據 插 入 完 成 後 重 新 打 開 它 們 。 如 果 恢 復 的 中 途 停 止 , 那 麼 系 統 表 可 能 處 於 錯 誤 狀 態 。
• |
pg_restore 將 不 會 爲 單 一 的 表 恢 復 大 對 象 。 如 果 一 個 歸 檔 包 含 大 對 象 , 那 麼 所 有 大 對 象 都 將 被 恢 復 。 又 見 參 閱 pg_dump(1) 的 文 擋 獲 取 有 關 pg_dump 的 侷 限 的 細 節 。 一 旦 完 成 恢 復 , 最 好 在 每 個 恢 復 的 對 象 上 運 行 ANALYZE, 以 便 給 優 化 器 有 用 的 |
統 計 。
EXAMPLES 例 子
把 一 個 包 含 大 對 象 的 叫 mydb 的 數 據 庫 轉 儲 到 一 個 tar文 件 :
$ pg_dump -Ft -b mydb > db.tar 把 這 個 數 據 庫 恢 復 到 現 有 的 叫 newdb 的 數 據 庫 中 ( 連 同 BLOB) :
$ pg_restore -d newdb db.tar 要 對 項 目 重 新 排 序 , 首 先 必 須 轉 儲 歸 檔 的 目 錄 :
$ pg_restore
-l archive.file > archive.list 這 個
文 件 由 一 行 頭
和 每 個 項 目 一
行 組 成 , 比 如
。 ; ;
Archive created at Fri Jul 28 22:28:36 2000 ;
dbname: birds ;
TOC Entries: 74 ;
Compression: 0 ;
Dump Version: 1.4-0 ;
Format: CUSTOM ; ; ;
Selected TOC Entries: ;
2; 145344 TABLE species postgres
3; 145344 ACL species
4; 145359 TABLE nt_header postgres
5; 145359 ACL nt_header
6; 145402 TABLE species_records postgres
7; 145402 ACL species_records
8; 145416 TABLE ss_old postgres
9; 145416 ACL ss_old
10; 145433 TABLE map_resolutions postgres
11; 145433 ACL map_resolutions
12; 145443 TABLE hs_old postgres
13; 145443 ACL hs_old 這 裏 分 號
是 註 釋 分 隔 符
, 而 行 開 頭 的
數 字 代 表 賦 給
每 個 項 目 的 內
部 歸 檔 ID。 文 件
內 的 行 可 以 註
釋 掉 , 刪 除 和
/或 重 新 排 列 。
比 如 ,
10; 145433
TABLE map_resolutions postgres ;
2; 145344 TABLE species postgres ;
4; 145359 TABLE nt_header postgres
6; 145402 TABLE species_records postgres ;
8; 145416 TABLE ss_old postgres 可 以 用
做 pg_restore 的 輸 入 並
且 只 會 恢 復 項
目 10 和 6, ( 以 這
個 順 序 ) :
$ pg_restore -L archive.list archive.file
HISTORY 歷 史
pg_restore 工 具 第 一 次 出 現 在 PostgreSQL 7.1。
SEE ALSO 參 見
pg_dump(1), pg_dumpall(1), psql(1)
譯 者
Postgresql 中 文 網 站 何 偉 平 <laser [AT] pgsqldb.org>
跋
本 頁 面 中 文 版 由 中 文 man 手 冊 頁 計 劃 提 供 。 中 文 man 手 冊 頁 計 劃 : https://github.com/man-pages-zh/manpages-zh