Man page - pg_restore(1)
Manual
PG_RESTORE
NAMESYNOPSIS
DESCRIPTION 描 述
OPTIONS 選 項
ENVIRONMENT 環 境
DIAGNOSTICS 診 斷
NOTES 注 意
EXAMPLES 例 子
HISTORY 歷 史
SEE ALSO 參 見
譯 者
跋
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@pgsqldb.org>
跋
本
頁 面 中 文 版 由
中 文 man 手 冊 頁 計
劃 提 供 。
中 文 man 手 冊 頁 計
劃 :
https://github.com/man-pages-zh/manpages-zh