Provided by:
manpages-zh_1.5-1_all 
NAME
pg_restore - 從一茈 pg_dump 創建的備份檔案中恢復 PostgreSQL 數據庫。
SYNOPSIS
pg_restore [ option... ] [ filename ]
DESCRIPTION yz
pg_restore 是一種用於恢復由 pg_dump(1) 創建的任何非純文本輸出格式中的
PostgreSQL 數據庫的應用。 它將發出必n的命令來-
奐s構造數據庫,以便於把它恢復成保存它的時啋獐豸l。
歸檔(備份)檔案還允許pg_restore 有選擇地進行恢復, 甚至在恢復前-
奐s排列條目的順序。歸檔的檔案設p成可以在不同的硬體體系之間移植。
pg_restore 可以以兩種模式操作:如果聲明了數據庫名字,
那麼歸檔是直接恢復到數據庫裏。大對象只能用直接數據庫聯接進行恢復。
否則,先創建一茈]含垂媦畬w所必須的 SQL 命令的稿本(並且寫入到一-
蚗仵蚸峈抯郱擖X), 類似 pg_dump 輸出純文字格式的時堀衎堛漕犖婼Z本。
因此,一些控制稿本輸出的選項就是摹擬 pg_dump 的操作。
顯然,pg_restore 無法恢復那些不存在歸檔檔案中的信息;
比如,如果歸檔是用"把數據轉儲為 INSERT命令"選項製作的, 那麼 pg_restore
將不能使用 COPY 語句裝載數據。
OPTIONS項
pg_restore 接受下列命令行參數。
filename
聲明n恢復的備份檔案的位置。如果沒有聲明,則使用標準輸入。
-a
--data-only
只恢復數據,而不恢復表模式(數據定義)。
-c
--clean
創建數據庫對象前先清理(刪除)它怴C
-C
--create
在恢復數據庫之前先創建它。(如果出現了這蚇龠窗A和 -d
在一起的數據庫名只是用於發出最初的 CREATE DATABASE 命令。
所有數據都恢復到名字出現在歸檔中的數據庫中去。)
-d dbname
--dbname=dbname
與數據庫 dbname 聯接並且直接恢復到該數據庫中。
-f filename
--file=filename
聲明生成的稿本的輸出檔案,或者出現 -l
選項時用於列表的檔案,預設是標準輸出。
-F format
--format=format
聲明備份檔案的格式。因為pg_restore
會自動判斷格式,所以如果聲明了,它可以是下惜坐@:
t 備份是一 tar 歸檔。 使用這荇璁﹞像\在恢復數據庫的時-
奐s排序和/或把表模式元素排除出去。 同時還可能在恢復的時-
制裝載的數據。
c 備份的格式是來自 pg_dump 的客戶化格式。
這是最靈活的格式,因為它允許奐s對數據排序,也允許-
姜表模式元素。 預設時這荇璁′O壓縮的。
-i
--ignore-version
忽略數據庫版本檢查。
-I index
--index=index
只恢復命名的索引。
-l
--list 列出備份的內容。這蚞犑@的輸出可以用 -L 選項制和-
垮珓黕_的項目。
-L list-file
--use-list=list-file
只恢復在 list-file 裏悸漱葛嚏A以它怞b檔案中出現的順序。
你可以移動各茼璅疇B也可以通過在行開頭放 ';'
的方式注釋。(見下文獲取例子。)
-N
--orig-order
以最初在 pg_dump 裏生成的轉儲順序恢復項目。 這-
蚇龠筐S有什麼實際的用途,因為 pg_dump 會以自己方便的順序生成項,
這荈陽ㄔi能是恢復這些數據的安全順序。 (這-
荈陽ㄛO項最後在歸檔的內容列表中列出的順序。) 又見 -r。
-o
--oid-order
以 OID 順序恢復項目。這蚇龠等帠B很小, 因為 OID
只是最初創建順序的一茠韘指示。 如果還聲明了 -N,那麼這-
蚇龠聒棯郅\它。又見 -r。
-O
--no-owner
不n輸出設置對象的權,以便與最初的數據庫匹配的命令。
預設時,pg_restore 發出 SET SESSION AUTHORIZATION
語句設置創建出來的模式元素的所有者權。
如果最初的數據庫連接不是由超級使用者(或者是擁有所有創建出來的對象的同一-
茖洏峈怴^發起的,那麼這些語句將失敗。 使用
-O,那麼任何使用者都可以用於初始的連接,並且這-
茖洏峈戔N擁有所有創建出來的對象。
-P function-name(argtype [, ...])
--function=function-name(argtype [, ...])
只恢復指定的命名函數。請注意仔細拼寫函數名及其參數,應該和轉儲的內容列表中的完全一樣。
-r
--rearrange
以對象類型垮等堙]這茧o生在以 -N 或者 -o 排序之後)。
垮O為了給出最大可能的性能。
如果沒有 -N, -o, and -r,那麼 pg_restore
以項目出現在歸檔的內容列表中的順序恢復他怴A 或者按照他怞b list-
file 裏悸熄陽黕_他怊w─假如給出了 -L 的話。 -o 和 -r
的組合複製了 pg_dump 在創建歸檔的內容列表之前進行的排序,
因此,這蚇龠絨q常沒必n聲明。
-R
--no-reconnect
這蚇龠竣w經廢棄了,但是為了保持向下相容仍然接受。
-s
--schema-only
只恢復表結構(數據定義)。不恢復數據,序列N姜m。
-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
這蚇龠竣w經廢棄了,但是出於向下相容,仍然接受。 pg_restore
現在總是表現得像以前選中這蚇龠竣@樣。
-X disable-triggers
--disable-triggers
這蚇龠等u有在執行僅恢復數據的時啎~相關。它告訴 pg_restore
在裝載數據的時埶鶡璊@些命令臨時關閉在目標表上的觸發器。
如果你在表上有完整性檢查或者其它觸發器,
而你又不希望在裝載數據的時埥E活它怴A那麼可以使用這蚇龠窗C
目前,為 --disable-triggers 發出的命令必須以超級使用者發出。
因此,你應該也n用 -S 聲明一荈W級使用者名,或者更好是設置 --use-
set-session-authorization 並且以 PostgreSQL 超級使用者言鷞B行
pg_restore。
pg_restore 還接受下悸漫R令行參數做為聯接參數:
-h host
--host=host
聲明伺服器運行的機器的主機名。 如果數H斜扛開頭,那麼它被用做
Unix 域套接字的目錄。 預設是從 PGHOST
環境變量中獲取的(如果設置了), 否則將嘗試進行 Unix 域套接字。
-p port
--port=port
聲明伺服器偵聽的 TCP 端口或者本地的 Unix 域套接字檔案擴展。
預設是環境變量 PGPORT 的]如果設置了的話),
否則就說編譯的預設。
-U username
以給出使用者角擱p接。
-W 強制給出口令提示。如果伺服器n求口令認証,那麼這蚗雩茼菾妗o生。
ENVIRONMENT境
PGHOST
PGPORT
PGUSER 預設連接參數。
DIAGNOSTICSE
當使用-d選項聲明了直接數據庫聯接時, pg_restore 在內部執行 SQL
語句。如果你運行 pg_restore 出了毛病, 請確保你能用類似 psql(1)
這樣的東西從數據庫中選取信息。
NOTES`N
如果你的安裝給template1數據庫增加了任何你自己的東西, 那麼請注意把
pg_dump 的輸出恢復到一荅u正空的數據庫中; 否則你可能會收到因為-
契_定義所追加的對象而造成的錯誤訊息。n製作一-
茖S有任何本地附屬物的數據庫,
可以從template0而不是template1拷貝,比如:
CREATE DATABASE foo WITH TEMPLATE template0;
pg_restore 的局在下惘C出。
o 當向一茪w經存在的表恢復數據,並且還使用了 --disable-triggers
選項時, pg_restore 在插入數據前放出一些查詢關閉使用者表上的觸發器,
在數據插入完成後奐s打開它-
怴C如果恢復的中途停止,那麼系統表可能處於錯誤狀態。
o pg_restore 將不會為單一的表恢復大對象。 如果一-
蚋k檔包含大對象,那麼所有大對象都將被恢復。
又見參閱 pg_dump(1) 的文擋獲取有關 pg_dump 的局的細節。
一旦完成恢復,最好在每茷黕_的對象上運行 ANALYZE,
以便給優化器有用的統p。
EXAMPLESl
把一茈]含大對象的叫 mydb 的數據庫轉儲到一茭ar檔案:
$ pg_dump -Ft -b mydb > db.tar
把這蚍畬w恢復到現有的叫 newdb 的數據庫中(連同BLOB):
$ pg_restore -d newdb db.tar
n對項目奐s排序,漸必須轉儲歸檔的目錄:
$ 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
這裏分號是注釋分隔符,而行開頭的數字代表賦給每荈等堛漱熙¯k檔 ID。
檔案內的行可以注釋掉,刪除和/或奐s排列。比如,
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
HISTORYv
pg_restore 工具第一次出現在 PostgreSQL 7.1。
SEE ALSO見
pg_dump(1), pg_dumpall(1), psql(1)
者
Postgresql <laser@pgsqldb.org>