<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                # pg_dump ## Name pg_dump?--? 將一個PostgreSQL數據庫轉儲到一個腳本文件或者其它歸檔文件中 ## Synopsis `pg_dump` [`_connection-option_`...] [`_option_`...] [`_dbname_`] ## 描述 pg_dump是一個用于備份PostgreSQL 數據庫的工具。它甚至可以在數據庫正在使用的時候進行完整一致的備份。 pg_dump并不阻塞其它用戶對數據庫的訪問(讀或者寫)。 轉儲格式可以是一個腳本或者歸檔文件。腳本轉儲的格式是純文本,它包含許多 SQL 命令, 這些 SQL 命令可以用于重建該數據庫并將之恢復到保存成腳本的時候的狀態。 使用[psql](#calibre_link-23)從這樣的腳本中恢復。 它們甚至可以用于在其它機器甚至是其它硬件體系的機器上重建該數據庫, 通過對腳本進行一些修改,甚至可以在其它 SQL 數據庫產品上重建該數據庫。 歸檔文件格式必須和[pg_restore](#calibre_link-440)一起使用重建數據庫。 它們允許pg_restore對恢復什么東西進行選擇, 或者甚至是在恢復之前對需要恢復的條目進行重新排序。歸檔文件也是設計成可以跨平臺移植的。 如果一種候選文件格式和pg_restore結合, 那么pg_dump就能提供一種靈活的歸檔和傳輸機制。 pg_dump可以用于備份整個數據庫,然后就可以使用 pg_restore檢查這個歸檔和/或選擇要恢復的數據庫部分。 最靈活的輸出文件格式是"custom"(自定義)格式(`-Fc`)和 "directory"(目錄)格式(`-Fd`)。 它們允許對歸檔元素進行選取和重新排列,支持并行恢復并且缺省時是壓縮的。 "directory"格式是唯一支持并行轉儲的格式。 在運行pg_dump的時候,應該檢查輸出, 看看是否有任何警告存在(在標準錯誤上打印),特別是下面列出的限制。 ## 選項 下面的命令行參數控制輸出的內容和格式。 `_dbname_` 將要轉儲的數據庫名。如果沒有聲明這個參數,那么使用環境變量`PGDATABASE`。 如果那個環境變量也沒聲明,那么使用發起連接的用戶名。 `-a``--data-only` 只輸出數據,不輸出模式(數據定義)。轉儲表數據、大對象和序列值。 這個選項類似于聲明`--section=data`,但是只是因為歷史原因存在并不完全相同。 `-b` `--blobs` 在轉儲中包含大對象。除非指定了`--schema`, `--table`, `--schema-only`開關,否則這是默認行為。因此`-b` 開關僅用于在選擇性轉儲的時候添加大對象。 `-c` `--clean` 輸出命令在輸出創建數據庫命令之前先清理(drop)該數據庫對象。 (如果任何對象在目標數據庫中不存在,則轉儲可能生成一些無害的錯誤信息。) 這個選項只是對純文本格式有意義。對于歸檔格式,可以在調用`pg_restore`的時候聲明該選項。 `-C` `--create` 以一條創建該數據庫本身并且與這個數據庫連接命令開頭進行輸出。如果是這種形式的腳本, 那么你在運行腳本之前和目的安裝中的哪個數據庫連接就不重要了。如果也聲明了 `--clean`,那么腳本在重新連接到數據庫之前刪除并重新創建目標數據庫。 這個選項只對純文本格式有意義。對于歸檔格式,可以在調用`pg_restore` 的時候聲明該選項。 `-E` `_encoding_` `--encoding=``_encoding_` 以指定的字符集編碼創建轉儲。缺省時,轉儲是按照數據庫編碼創建的。 另外一個獲取同樣結果的方法是將`PGCLIENTENCODING`環境變量設置為期望的轉儲編碼。 `-f` `_file_` `--file=``_file_` 把輸出發往指定的文件。文件基礎輸出格式時可以省略這個參數,這種情況下使用標準輸出。 但是,在聲明目標目錄而不是文件時必須給出目錄輸出格式。在這種情況下, 目錄通過`pg_dump`創建并且必須之前不存在。 `-F` `_format_` `--format=``_format_` 選擇輸出的格式。`_format_`可以是下列之一: `p` `plain` 純文本SQL腳本文件(缺省)。 `c` `custom` 適合輸入到pg_restore里的自定義格式歸檔。 加上目錄輸出格式,這是最靈活的格式,它允許在轉儲期間對已歸檔的條目進行手動選擇和重新排列。 這個格式缺省的時候是壓縮的。 `d` `directory` 適合輸入到pg_restore里的目錄格式歸檔。這將創建一個目錄, 該目錄包含一個為每個被轉儲的表和二進制大對象的文件,加上一個號稱目錄的文件, 該文件以pg_restore可讀的機器可讀格式描述轉儲的對象。 目錄格式歸檔可以用標準Unix工具操作;例如,在非壓縮歸檔中的文件可以用 gzip工具壓縮。這個格式缺省的時候是壓縮的, 并且也支持并行轉儲。 `t` `tar` 適合輸入到pg_restore里的`tar`歸檔文件。 tar格式兼容目錄格式;提取tar格式歸檔產生一個有效的目錄格式歸檔。不過, tar格式不支持壓縮并且限制單獨的表為8 GB。還有,表數據條目的相關順序在轉儲期間不能更改。 `-i` `--ignore-version` 一個現在已經不用了的廢棄選項。 `-j` `_njobs_` `--jobs=``_njobs_` 通過同時轉儲`_njobs_`表并行運行轉儲。 該選項減少了轉儲的時間,但是也增加了數據庫服務器的負載。可以只將這個選項用于目錄輸出格式, 因為這是多進程可以同時寫它們的數據的唯一的輸出格式。 pg_dump將打開`_njobs_` + 1個到數據庫的連接, 所以確保你的[max_connections](#calibre_link-441)設置足夠高以適應所有的連接。 運行并行轉儲時在數據庫對象上請求排他鎖會導致轉儲失敗。原因是pg_dump 主進程在工作進程稍后轉儲的對象上請求共享鎖,這樣做是為了確保在轉儲運行時沒有人刪除它們或移走它們。 如果另一個客戶端然后在一個表上請求一個排他鎖,該鎖將不被授予,但是將會排隊等候主進程的共享鎖釋放。 因此,任意其他訪問表的請求也將不被授予,并且會在排他鎖請求后排隊。 這包含工作進程嘗試轉儲這個表。沒有防范措施這將是一個經典的死鎖情況。為了檢測這個沖突, pg_dump工作進程請求使用`NOWAIT`選項請求另外一個共享鎖。 如果沒有授予工作進程這個共享鎖,那么肯定是另外一個人在此期間請求了一個排他鎖, 并且沒有辦法繼續進行轉儲了,所以pg_dump只能退出轉儲。 對于一個一致的備份,數據庫服務器需要支持同步快照,這是PostgreSQL 9.2 引入的一個特性。有了這個特性,數據庫客戶端可以保證他們看到相同的數據設置,即使它們使用不同的連接。 `pg_dump -j`使用多個數據庫連接;它與主進程連接到數據庫一次,然后再次連接到每個worker工作。 沒有同步快照特性,不同的worker工作將不會保證在每個連接中看到相同的數據,這將導致一個不一致的備份。 如果你想在一個9.2之前的服務器上運行并行轉儲,那么你需要保證在主進程到最后一個worker工作連接到數據庫之間, 數據庫內容不會改變。最簡單的方法是在開始備份之前叫停所有數據修改進程(DDL和DML)訪問數據庫。 你也需要在9.2之前的PostgreSQL服務器上運行`pg_dump -j` 時,聲明`--no-synchronized-snapshots`參數。 `-n` `_schema_` `--schema=``_schema_` 只轉儲匹配`_schema_`的模式內容, 包括模式本身以及其中包含的對象。如果沒有聲明這個選項, 所有目標數據庫中的非系統模式都會被轉儲出來。可以使用多個`-n`選項指定多個模式。 同樣,`_schema_`參數將按照psql 的`\d`命令的規則(參見[_Patterns_](#calibre_link-442)) 被解釋為匹配模式,因此可以使用通配符匹配多個模式。在使用通配符的時候,最好用引號進行界定, 以防止 shell 將通配符進行擴展。參閱[_例子_](#calibre_link-443)。 > **Note:** 如果指定了`-n`,那么pg_dump 將不會轉儲那些模式所依賴的其他數據庫對象。因此, 無法保證轉儲出來的內容一定能夠在另一個干凈的數據庫中恢復成功。 > **Note:** 非模式對象(比如大對象)不會在指定`-n`的時候被轉儲出來。 你可以使用`--blobs`明確要求轉儲大對象。 `-N` `_schema_` `--exclude-schema=``_schema_` 不轉儲任何匹配`_schema_`的模式內容。 模式匹配規則與`-n`完全相同。可以指定多個`-N`以排除多種匹配的模式。 如果同時指定了`-n`和`-N`,那么將只轉儲匹配`-n` 但不匹配`-N`的模式。如果出現`-N`但是不出現`-n`, 那么匹配`-N`的模式將不會被轉儲。 `-o` `--oids` 作為數據的一部分,為每個表都輸出對象標識(OIDs)。 如果你的應用需要OID字段的話(比如在外鍵約束中用到),那么使用這個選項。 否則,不應該使用這個選項。 `-O` `--no-owner` 不把對象的所有權設置為對應源數據庫。pg_dump默認發出 `ALTER OWNER`或`SET SESSION AUTHORIZATION` 語句以設置創建的數據庫對象的所有權。如果這些腳本將來沒有被超級用戶 (或者擁有腳本中全部對象的用戶)運行的話將會失敗。`-O` 選項就是為了讓該腳本可以被任何用戶恢復并且將腳本中對象的所有權賦予該選項指定的用戶。 這個選項只是對純文本格式有意義。對于歸檔格式,在調用`pg_restore` 的時候可以聲明該選項。 `-R` `--no-reconnect` 這個選項已經過時,但是出于向下兼容的考慮,仍然接受這個選項。 `-s` `--schema-only` 只輸出對象定義(模式),不輸出數據。 這個選項與`--data-only`相反。類似于,但是由于歷史原因不等于聲明 `--section=pre-data --section=post-data`。 不要與`--schema`選項混淆,`--schema`使用不同含義的"schema"。 排除表數據只是數據庫中表的一個子集,參閱`--exclude-table-data`。 `-S` `_username_` `--superuser=``_username_` 指定關閉觸發器時需要用到的超級用戶名。它只有使用了`--disable-triggers` 的時候才有影響。一般情況下最好不要輸入這個參數,而是用超級用戶啟動生成的腳本。 `-t` `_table_` `--table=``_table_` 只轉儲出匹配`_table_`的表(或視圖、序列、外表)。 可以使用多個`-t`選項匹配多個表。同樣,`_table_` 參數將按照psql的`\d`命令的規則(參見 [_Patterns_](#calibre_link-442))被解釋為匹配模式, 因此可以使用通配符匹配多個模式。在使用通配符的時候,最好用引號進行界定, 以防止 shell 將通配符進行擴展。參閱[_例子_](#calibre_link-443)。 使用了`-t`之后,`-n`和`-N`選項就失效了。因為被`-t` 選中的表將無視`-n`和`-N`選項而被轉儲,同時除了表之外的其他對象不會被轉儲。 > **Note:** 如果指定了`-t`,那么pg_dump 將不會轉儲任何選中的表依賴的其它數據庫對象。因此, 無法保證轉儲出來的表能在一個干凈的數據庫中成功恢復。 > **Note:** `-t`選項與PostgreSQL 8.2 之前的版本不兼容。 之前的`-t tab`將轉儲所有名為`tab`的表, 但是現在只轉儲在默認搜索路徑中可見的表。寫成`-t '*.tab'`將等價于老版本的行為。 同樣,你必須用`-t sch.tab`而不是老版本的`-n sch -t tab`選擇特定模式中的表。 `-T` `_table_` `--exclude-table=``_table_` 不要轉儲任何匹配`_table_`模式的表。 模式匹配規則與`-t`完全相同。可以指定多個`-T`以排除多種匹配的表。 如果同時指定了`-t`和`-T`,那么將只轉儲匹配`-t` 但不匹配`-T`的表。如果出現`-T`但是不出現`-t`, 那么匹配 `-T`的表將不會被轉儲。 `-v` `--verbose` 指定冗余模式。這樣將令pg_dump 輸出詳細的對象評注以及轉儲文件的啟停時間和進度信息到標準錯誤上。 `-V` `--version` 打印pg_dump版本然后退出。 `-x` `--no-privileges` `--no-acl` 禁止轉儲訪問權限(grant/revoke 命令)。 `-Z` `_0..9_` `--compress=``_0..9_` 指定要使用的壓縮級別。0表示不壓縮。對于自定義歸檔格式,指定單個表數據段的壓縮, 并且缺省是中等水平的壓縮。對于純文本輸出,設置非零壓縮級別會壓縮整個輸出文件, 就像通過gzip反饋回來一樣;但是缺省是不壓縮的。 tar歸檔模式當前不支持壓縮。 `--binary-upgrade` 此選項用于在線升級工具。不建議也不支持用于其他目的。該選項的行為可能會在將來的版本中改變。 `--column-inserts` `--attribute-inserts` 把數據轉儲為帶有明確字段名的`INSERT`命令 (`INSERT INTO` `_table_` (`_column_`, ...) VALUES ...)。這樣會導致恢復非常緩慢,它主要用于制作那種可以用于其它非 PostgreSQL數據庫的轉儲。由于這個選項為每條記錄都生成一條命令, 因此如果其中某一行命令出錯,那么將僅有該行數據丟失,而不是整個表的數據丟失。 `--disable-dollar-quoting` 這個選項關閉使用美元符界定函數體。強制它們用 SQL 標準的字符串語法的引號包圍。 `--disable-triggers` 這個選項只是和創建僅有數據的轉儲相關。它告訴pg_dump 包含在恢復數據時臨時關閉目標表上觸發器的命令。如果在表上有參照完整性檢查或者其它觸發器, 而恢復數據的時候不想重載他們,那么就應該使用這個選項。 目前,為`--disable-triggers`發出的命令必須以超級用戶來執行。因此, 你應該同時用`-S`聲明一個超級用戶名, 或者最好是用一個超級用戶的身份來啟動這個生成的腳本。 這個選項只對純文本格式有意義。對于歸檔格式,可以在調用`pg_restore` 的時候聲明這個選項。 `--exclude-table-data=``_table_` 不要轉儲任何匹配`_table_`模式的表。 模式匹配規則與`-t`完全相同。可以給出多個`--exclude-table-data` 以排除多個匹配的表。當你需要指定表的定義時該選項是有用的,即使你不需要表里面的數據。 要排除數據庫中所有表的數據,參閱`--schema-only`。 `--inserts` 將數據輸出為的`INSERT`命令(而不是`COPY`)。 這樣會導致恢復非常緩慢。這個選項主要用于制作那種可以用于其它非 PostgreSQL數據庫的轉儲。由于這個選項為每條記錄都生成一條命令, 因此如果其中某一行命令出錯,那么將僅有該行數據丟失,而不是整個表的數據丟失。 請注意,如果你重新排列了字段順序,那么恢復可能會完全失敗。 `--column-inserts`更安全,但是也更慢。 `--lock-wait-timeout=``_timeout_` 在轉儲開始的時候不要等待請求一個共享表鎖。相反,如果無法在指定的 `_timeout_`內鎖住表則失敗。 timeout可以用任意`SET statement_timeout`接受的格式聲明。 (允許的值依賴于你轉儲的服務器版本,但是自7.3以來,所有的版本都接受毫秒的整數值。 當從7.3以前的版本服務器中轉儲時,省略該選項。) `--no-security-labels` 不轉儲安全標簽。 `--no-synchronized-snapshots` 該選項允許在9.2以前的服務器上運行`pg_dump -j`,參閱`-j` 參數的文檔獲取更多信息。 `--no-tablespaces` 不要輸出選擇表空間的命令。有了該選項,所有對象在轉儲期間都將在缺省的表空間中創建。 這個選項只是對純文本格式有意義。對于歸檔格式,在調用`pg_restore` 的時候可以聲明該選項。 `--no-unlogged-table-data` 不要轉儲未記錄表的內容。該選項對于表定義(模式)是否轉儲沒有影響; 它只阻止轉儲表的數據。當從備用服務器轉儲時,未記錄表中的數據總是排除。 `--quote-all-identifiers` 強制給所有標識符加上引號。這在轉儲一個數據庫到一個可能引入了額外關鍵字的新版本中時可能是有用的。 `--section=``_sectionname_` 只轉儲命名的章節。該章節名可以是`pre-data`, `data`, 或 `post-data`。可以多次聲明這個選項以選擇多個章節。 缺省是轉儲所有章節。 數據章節包含實際的表數據、大對象內容和序列值。原始數據項包含索引、觸發器、 規則和約束(除了驗證檢查約束)的定義。之前的數據項包含所有其他數據定義項。 `--serializable-deferrable` 為轉儲使用一個`可串行化`的事務,以保證使用的快照和稍后的數據庫狀態一致; 做這些是通過等待事務流中的一個點,該點沒有異常會出現,所以不會有轉儲失敗或導致其他事務 `serialization_failure`而回滾的風險。參閱[Chapter 13](#calibre_link-444) 獲取關于事務隔離和并發控制的更多信息。 這個選項對于只打算災難恢復的轉儲沒有益處。對于原始數據庫仍然在更新時, 加載一個數據庫的拷貝作為報告或其他只讀加載共享的轉儲是有幫助的。 沒有這個選項,轉儲會反應一個與任何事務最終提交的序列化執行不一致的狀態。 例如,如果使用了批處理技術,可能會在轉儲中顯示一部分,而不是批處理中的所有條目。 在pg_dump開始時,如果沒有讀寫事務在活動,則這個選項沒有什么影響。 如果有讀寫事務在活動,那么轉儲開始時可能會延遲一段不確定的時間。 一旦運行,有沒有開關的性能是一樣的。 `--use-set-session-authorization` 輸出符合 SQL 標準的`SET SESSION AUTHORIZATION`命令而不是`ALTER OWNER` 命令來確定對象所有權。這樣令轉儲更加符合標準,但是如果轉儲文件中的對象的歷史有些問題, 那么可能不能正確恢復。并且,使用`SET SESSION AUTHORIZATION` 的轉儲需要數據庫超級用戶的權限才能轉儲成功,而`ALTER OWNER`需要的權限則低得多。 `-?` `--help` 顯示關于pg_dump命令行參數的幫助然后退出。 下面的命令行參數控制數據庫的連接參數。 `-d` `_dbname_` `--dbname=``_dbname_` 聲明要連接的數據庫名稱。相當于在命令行中聲明`_dbname_` 作為第一個非選項參數。 如果這個參數包含一個`=`符號或以一個有效的URI前綴 (`postgresql://`或`postgres://`)開始, 那么將其看做一個`conninfo`字符串。參閱[Section 31.1](#calibre_link-445) 獲取更多信息。 `-h` `_host_` `--host=``_host_` 指定運行服務器的主機名。如果數值以斜杠開頭,則被用作到 Unix 域套接字的路徑。 缺省從`PGHOST`環境變量中獲取(如果設置了的話),否則,嘗試一個 Unix 域套接字連接。 `-p` `_port_` `--port=``_port_` 指定服務器正在偵聽的 TCP 端口或本地 Unix 域套接字文件的擴展(描述符)。 缺省使用`PGPORT`環境變量(如果設置了的話),否則,編譯時的缺省值。 `-U` `_username_` `--username=``_username_` 連接的用戶名。 `-w` `--no-password` 從不發出密碼提示問題。如果服務器要求密碼認證并且密碼不可用于其他意思如 `.pgpass`文件,則連接嘗試將會失敗。 該選項在批量工作和不存在用戶輸入密碼的腳本中很有幫助。 `-W` `--password` 強制pg_dump在連接到數據庫之前提示一個密碼。 這個選項從來不是至關重要的,因為如果服務器需求密碼認證,則pg_dump 自動提示一個密碼。不過,pg_dump 將在找出服務器想要一個密碼上浪費一個連接嘗試。在某些情況下,值得輸入`-W` 以避免額外的連接嘗試。 `--role=``_rolename_` 指定創建轉儲的角色名。這個選項導致連接到數據庫之后pg_dump 發出一個`SET ROLE` `_rolename_`命令。 當認證的用戶(通過`-U`指定)缺乏pg_dump所需的權限時是很有用的, 可以轉變成有所需權限的角色。一些安裝有反對作為超級用戶直接登錄的政策, 使用這個選項允許轉儲不違反該政策。 ## 環境變量 `PGDATABASE` `PGHOST` `PGOPTIONS` `PGPORT` `PGUSER` 缺省連接參數。 這個功用,類似大多數其他PostgreSQL實用工具, 也使用由libpq支持的環境變量(參閱[Section 31.14](#calibre_link-39))。 ## 診斷 pg_dump在內部使用`SELECT`語句。 如果你運行pg_dump時碰到問題,確認你能夠使用像 [psql](#calibre_link-23)這樣的程序從數據庫選取信息。還有,要申請 任何libpq前端庫要使用的缺省連接設置和環境變量。 pg_dump的數據庫活動通常由統計收集器收集。 如果不需要,你可以通過`PGOPTIONS` 或 `ALTER USER`命令設置參數`track_counts`為假。 ## 注意 如果你的數據庫給`template1`數據庫增加了任何你自己的東西, 那么請注意把pg_dump的輸出恢復到一個真正空的數據庫中; 否則你可能會收到因為重復定義所追加的對象而造成的錯誤信息。 要制作一個沒有任何本地附屬物的數據庫,可以從`template0` 而不是`template1`拷貝,比如: ``` CREATE DATABASE foo WITH TEMPLATE template0; ``` 在進行純數據轉儲并且使用了選項`--disable-triggers`的時候, pg_dump發出一些查詢先關閉用戶表上的觸發器, 然后插入數據,插入完成后再打開觸發器。如果恢復動作在中間停止, 那么系統表可能就會處于一種錯誤狀態。 tar 歸檔的成員的大小限制于 8 GB 。這是 tar 文件格式的固有限制。 因此這個格式無法用于任何大小超過這個尺寸的表。 tar 歸檔和任何其它輸出格式的總大小是不受限制的,只是可能會有操作系統的限制。 pg_dump生成的轉儲文件并不包含優化器用于查詢規劃決策的統計信息。 因此,恢復完之后,建議在每個已恢復的對象上運行`ANALYZE`, 以保證最佳的性能;參閱[Section 23.1.3](#calibre_link-446)和[Section 23.1.6](#calibre_link-77) 獲取更多信息。轉儲文件也不包含任何`ALTER DATABASE ... SET`命令; 這些設置通過[pg_dumpall](#calibre_link-439)轉儲,連同數據庫用戶和其他安裝范圍的設置。 因為pg_dump常用于向新版本的PostgreSQL 中傳遞數據,所以pg_dump的輸出預計可以加載到比 pg_dump的版本更新的PostgreSQL 服務器版本中。pg_dump還可以從比它自身版本老的PostgreSQL 服務器中轉儲。(當前,支持后退到版本7.0的服務器。)不過,pg_dump 不能從比它自身主版本新的PostgreSQL服務器中轉儲;它會拒絕嘗試, 而不是冒險制作一個不可用的轉儲。另外,它不保證pg_dump 的輸出可以加載到一個舊的主版本的服務器中,即使該轉儲是從那個版本的服務器中而來。 加載轉儲文件到一個舊的服務器可能需要手動編輯轉儲文件,以刪除不被舊版本理解的語法。 ## 例子 將`mydb`數據庫轉儲到一個 SQL 腳本文件: ``` <samp class="literal">$</samp> <kbd class="literal">pg_dump mydb > db.sql</kbd> ``` 將上述腳本導入一個(新建的)數據庫`newdb`: ``` <samp class="literal">$</samp> <kbd class="literal">psql -d newdb -f db.sql</kbd> ``` 將數據庫轉儲為自定義格式的歸檔文件 ``` <samp class="literal">$</samp> <kbd class="literal">pg_dump -Fc mydb > db.dump</kbd> ``` 將數據庫轉儲為目錄格式歸檔: ``` <samp class="literal">$</samp> <kbd class="literal">pg_dump -Fd mydb -f dumpdir</kbd> ``` 將數據庫轉儲為目錄格式歸檔,并行5個worker工作: ``` <samp class="literal">$</samp> <kbd class="literal">pg_dump -Fd mydb -j 5 -f dumpdir</kbd> ``` 將歸檔文件導入一個(新建的)數據庫`newdb`: ``` <samp class="literal">$</samp> <kbd class="literal">pg_restore -d newdb db.dump</kbd> ``` 轉儲一個名為`mytab`的表: ``` <samp class="literal">$</samp> <kbd class="literal">pg_dump -t mytab mydb > db.sql</kbd> ``` 轉儲`detroit`模式中所有以`emp`開頭的表, 但是不包括`employee_log`表: ``` <samp class="literal">$</samp> <kbd class="literal">pg_dump -t 'detroit.emp*' -T detroit.employee_log mydb > db.sql</kbd> ``` 轉儲所有以`east`或`west`開頭并以`gsm`結尾的模式, 但是不包括名字中含有`test`模式: ``` <samp class="literal">$</samp> <kbd class="literal">pg_dump -n 'east*gsm' -n 'west*gsm' -N '*test*' mydb > db.sql</kbd> ``` 同上,不過這一次使用正則表達式的方法: ``` <samp class="literal">$</samp> <kbd class="literal">pg_dump -n '(east|west)*gsm' -N '*test*' mydb > db.sql</kbd> ``` 轉儲所有數據庫對象,但是不包括名字以`ts_`開頭的表: ``` <samp class="literal">$</samp> <kbd class="literal">pg_dump -T 'ts_*' mydb > db.sql</kbd> ``` 在`-t`等選項中指定大寫字母或大小寫混合的名字必須用雙引號界定, 否則將被自動轉換為小寫(參見[_Patterns_](#calibre_link-442))。 但是因為雙引號在 shell 中有特殊含義,所以必須將雙引號再放進單引號中。 這樣一來,要轉儲一個大小寫混合的表名,你就需要像下面這樣: ``` <samp class="literal">$</samp> <kbd class="literal">pg_dump -t "\"MixedCaseName\"" mydb > mytab.sql</kbd> ``` ## 又見 [pg_dumpall](#calibre_link-439), [pg_restore](#calibre_link-440), [psql](#calibre_link-23)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看