Provided by: manpages-zh_1.5.1-2_all bug

NAME

       pg_dump - 將一紞ostgreSQL數據庫抽出到一蚑Z本檔案或者其它歸檔檔案中

SYNOPSIS

       pg_dump [ option... ] [ dbname ]

DESCRIPTIONyz
       pg_dump                     是一茈峏馧                    PostgreSQL
       數據庫的工具。它甚至可以在數據庫正在並發使用的時堈i行完整一P的備份。
       pg_dump 並不阻塞其它使用者對數據庫的訪問(讀或者寫)。

        轉儲格式可以是一蚑Z本或者歸檔檔案。                                這-
       蚑Z本檔案的格式是純文本,它包含釵h 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)。                        它允章屩k檔元素進行選取和奐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檔允釵b恢復數據庫時奐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就可以成它a恢復到一-
              虓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就可以成它a恢復到一-
              虓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>