Provided by:
manpages-zh_1.5-1_all 
NAME
pg_dump - 將一紞ostgreSQL數據庫抽出到一蚑Z本檔案或者其它歸檔檔案中
SYNOPSIS
pg_dump [ option... ] [ dbname ]
DESCRIPTIONyz
pg_dump 是一茈峏馧 PostgreSQL
數據庫的工具。它甚至可以在數據庫正在並發使用的時堈i行完整一P的備份。
pg_dump 並不阻塞其它使用者對數據庫的訪問(讀或者寫)。
轉儲格式可以是一蚑Z本或者歸檔檔案。 這-
蚑Z本檔案的格式是純文本,它包含許多 SQL 命令, 這些 SQL 命令可以用於-
垂婺蚍畬w並將之恢復到保存成稿本的時啋漯牯A。 n恢復這些稿本,使用
psql(1)。 它怓雈i以用於在其它機器甚至是其它硬體體系的機器上-
垂婺蚍畬w, 通過對稿本進行一些蚹鵅A甚至可以在其它 SQL 數據庫產品上-
垂婺蚍畬w。
另外,還有埥麊甄k檔檔案格式可以和 pg_restore(1) 一起使用垂媦畬w,
並且它怳]允許 pg_restore(1) 對恢復什麼東西進行選擇,
或者甚至是在恢復之前對需n恢復的條目進行奐s排序。 歸檔檔案也是設-
p成可以跨孕x移植的。
如果一種埥奰仵蛃璁〝M pg_restore(1)
結合,那麼pg_dump就能提供一種靈活的歸檔和傳輸機制。 pg_dump
可以用於備份整蚍畬w, 然後就可以使用 pg_restore 檢查這蚋k檔和/或選擇-
n恢復的數據庫部分。 最靈活等輸出檔案格式是 ``custom(客戶化)''
格式(-Fc)。 它允許對歸檔元素進行選取和奐s排列,
並且預設時是壓縮的。tar 格式(-Ft)不是壓縮的並且我怞b裝載等時啎ㄔi能-
垮C, 不過它也很靈活;還有,它可以用其它工具,比如 tar 處理。
在運行 pg_dump 的時唌A我抸雩蚗邠d輸出,
看看是否有任何警告存在(在標準錯誤上列印),特別是下惘C出的制。
OPTIONS項
下悸漫R令行參數用於控制輸出格式。
dbname 聲明將n轉儲的數據庫名。 如果沒有聲明這荌捊A那麼使用環境變量
PGDATABASE。 如果那蚗藿疻僆q也沒聲明,那麼用發起連接的使用者名。
-a
--data-only
只輸出數據,不輸出結構(表定義)。
這蚇龠等u是對純文字格式有意義。對於其它格式,你可以在調用
pg_restore 的時埡n明選項。
-b
--blobs
在轉儲中包含大對象。
-c
--clean
輸出在創建數據庫創建命令之前先清理(刪除)該數據庫對象的命令。
這蚇龠等u是對純文字格式有意義。對於其它格式,你可以在調用
pg_restore 的時埡n明選項。
-C
--create
以一條創建該數據庫本豕疇B與這蚍畬w聯接等命令開頭進行輸出。
(如果是這種形式的稿本,那麼你在運行稿本之前和蚍畬w聯接就不-
n了。)
這蚇龠等u對純文字格式有意義。對於其它格式,你可以在調用
pg_restore 的時埡n明該選項。
-d
--inserts
將數據輸出為的 INSERT 命令(而不是 COPY)。 這樣會導-
P恢復非常緩慢。但卻令歸檔更容易移植到其它 SQL 數據庫。
-D
--column-inserts
--attribute-inserts
把數據轉儲為帶有明確字段名的 INSERT 命令。 (INSERT INTO
table(column, ...) VALUES ...)。 這樣會導-
P恢復非常緩慢,但是如果你想奐s排列字段的順序,那麼它是必須的。
-f file
--file=file
把輸出發往指定的檔案。如果忽略這些,則使用標準輸出。
-F format
--format=format
選擇輸出的格式。format可以是下列之一:
p 輸出純文本SQL稿本檔案(預設)
t 輸出適合輸入到 pg_restore 裏的tar歸檔檔案。 使用這-
蚋k檔允許在恢復數據庫時奐s排序和/或把表結構排除在外。
同時也可能可以在恢復的時唻赯獶些數據進行恢復。
c 輸出適於給 pg_restore 用的客戶化歸檔。
這是最靈活的格式,它允許對裝載的數據和綱n元素進行-
奐s排列。 這荇璁★w設的時圇O壓縮的。
-i
--ignore-version
忽略在 pg_dump 和數據庫伺服器之間的版本差別。
pg_dump 可以處理來自以前版本的PostgreSQL
的數據庫,但是太老的版本則不被支持了(目前是支持到 7.0)。
如果你需n跨越版本檢查時才使用這蚇龠窗] 而且如 pg_dump
失效,別說我沒警告你)。
-n namespace
--schema=schema
只轉儲 schema 的內容。 如果沒有聲明這-
蚇龠窗A所有目標數據庫中的非系統模式都會被轉儲出來。
Note: 注意: 在這蚍狾↗堙Apg_dump
並不試圖轉儲任何其它選定模式可能依賴的數據庫對象。
因此,系統不保証單一的一蚍狾〞甄鈶x就可以成功地恢復到一-
虓F凈的數據庫中去。
-o
--oids 為每茠穖ˋ擖X對象標識(OID)。
如果你的應用在某種程度上引用了OID字段的話,(比如,在外鍵約束中用到)。
那麼使用這蚇龠窗C否則,不應該使用這蚇龠窗C
-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.
這蚇龠等u是對純文字格式有意義。對於其它格式,在你調用
pg_restore 的時唭A可以聲明該選項。
-R
--no-reconnect
這蚇龠竣w經過時,但是出於向下相容的考慮,仍然接受這蚇龠窗C
-s
--schema-only
只輸出表綱n(定義),不輸出數據。
-S username
--superuser=username
聲明關閉觸發器時需n用到的超級使用者名。 它只有使用了 --disable-
triggers 的時啎~有關系。 (通常,我抭怞n不n輸入這-
荌捊A而是用超級使用者啟動生成的稿本。)
-t table
--table=table
只輸出表 table 的數據。 很可能是在不同模式裏惘釵h-
茼P名表;如果這樣,那麼所有匹配的表都將被轉儲出來。 同時聲明
--schema 和 --table 則只選擇一茠瞴C
Note:
注意: 在這蚍狾↗堙Apg_dump
並不試圖轉儲任何其它選定表可能依賴的數據庫對象。
因此,系統不保証單一的一茠磲甄鈶x就可以成功地恢復到一-
虓F凈的數據庫中去。
-v
--verbose
聲明冗餘模式。 這樣將令 pg_dump 在標準錯誤上列印進度信息。
-x
--no-privileges
--no-acl
避免輸出 ACL(賦予/撤消 命令)和表的所有者關系信息。
-X use-set-session-authorization
--use-set-session-authorization
這蚇龠絳o棄了,保留它是為了向下相容。 pg_dump
現在表現得總是想正式選取了這蚇龠竣@樣。
-X disable-triggers
--disable-triggers
這蚇龠等u是和創建僅有數據的轉儲相關。它告訴 pg_dump
包含在恢復數據時,臨時關閉目標表上悸瘧眶o器的命令。
如果你在表上有參考完整性檢查或者其它觸發器,而恢復數據的時-
唭A不想姜他怴A那麼你就應該使用這蚇龠窗C
目前,為 --disable-triggers 發出的命令必須用超級使用者來做。
因此,你應該同時用 -S 聲明一荈W級使用者名,或者最好是用一-
荈W級使用者的言魖荓珧妘o茈穻赤瑤Z本。
這蚇龠等u對純文字格式有意義。對於其它格式,你可以在調用
pg_restore 的時埡n明這蚇龠窗C
-Z 0..9
--compress=0..9
聲明在那些支持壓縮的格式中使用的壓縮級別。
(目前只有客戶化格式支持壓縮)。
下悸漫R令行參數控制數據庫為聯接參數。
-h host
--host=host
聲明運行伺服器的機器的主機名。 如果數H斜扛開頭,則它被用做到
Unix 域套接字的路徑。 預設是從 PGHOST
環境變量中取得的,如果設置了這蚗藿疻僆q的話,否則,嘗試一 Unix
域套接字連接。
-p port
--port=port
聲明伺服器正在偵聽並等待聯接的 TCP 端口或本地 Unix
主控套接字檔案句柄。 預設時使用環境變量 PGPORT 的-
]如果存在),或者是編譯時的預設C
-U username
以給出使用者角擱p接。
-W 強制口令提示。如果伺服器需n口令認証,那麼這荌囮@應該自動發生。
ENVIRONMENT境
PGDATABASE
PGHOST
PGPORT
PGUSER 預設連接參數
DIAGNOSTICSE
pg_dump 在內部使用 SELECT 語句。如果你運行 pg_dump
時碰到問題,確認你能夠使用像 psql(1) 這樣的程式從數據庫選取信息。
NOTES`N
如果你的數據庫給template1數據庫增加了任何你自己的東西, 那麼請注意把
pg_dump 的輸出恢復到一荅u正空的數據庫中; 否則你可能會收到因為-
契_定義所追加的對象而造成的錯誤訊息。n製作一-
茖S有任何本地附屬物的數據庫,
可以從template0而不是template1拷貝,比如:
CREATE DATABASE foo WITH TEMPLATE template0;
pg_dump 有幾茖謘G
o 在轉儲一茠磼峈怬@為純文本轉儲時,pg_dump 無法操作大對象。
大對象必須整數據庫地使用非文本歸檔格式之一進行轉儲。
o 在進行純數據轉儲時,並且使用了選項 --disable-triggers 的時-
唌Apg_dump 發出一些查詢先關閉在使用者表上悸瘧眶o器,
然後插入數據,數據插入完成後再發出查詢打開觸發器。
如果恢復動作在中間停止,那麼系統表可能就會處於一種錯誤狀態。
tar 歸檔的成的大小制於 8 GB。(這茖謈O tar 檔案格式的固有制。)
因此這荇璁△L法用於那些一茠磲漱j小超過這茪堣o的鴗慦穛{。 tar
歸檔和任何其它輸出格式的總大小是不受制的,只是可能會又作業系統的制。
恢復完之後,我怮媊釵b每茪w恢復的對象上運行 ANALYZE。
這樣優化器就可以得到有用的統p。
EXAMPLESl
轉儲一蚍畬w:
$ pg_dump mydb > db.out
姜這蚍畬w:
$ psql -d database -f db.out
輸出一茈s mydb 的包含BLOB 的數據庫到一 tar 檔案:
$ pg_dump -Ft -b mydb > db.tar
把這蚍畬w(連同BLOB)一起恢復到一茞{有的叫 newdb 的數據庫:
$ pg_restore -d newdb db.tar
HISTORYv
pg_dump 工具最戎X現在 Postgres95 版本 0.02。 非純文本輸出格式在
PostgreSQL 版本 7.1 時引入。
SEE ALSO見
pg_dumpall(1), pg_restore(1), psql(1)
者
Postgresql <laser@pgsqldb.org>