pg_dump相關命令參數記錄

pg_dump是用於備份一種PostgreSQL數據庫的工具。即使數據庫正在被併發使用,它也能創建一致的備份。pg_dump不阻塞其他用戶訪問數據庫(讀取或寫入)。

pg_dump只轉儲單個數據庫。要備份一個集簇中 對於所有數據庫公共的全局對象(例如角色和表空間),應使用 pg_dumpall。

轉儲可以被輸出到腳本或歸檔文件格式。腳本轉儲是包含 SQL 命令的純文本文件,它們可以用來重構數據庫到它被轉儲時的狀態。要從這樣一個腳本恢復,將它餵給psql。腳本文件甚至可以被用來在其他機器和其他架構上重構數據庫。在經過一些修改後,甚至可以在其他 SQL 數據庫產品上重構數據庫。

另一種可選的歸檔文件格式必須與pg_restore配合使用來重建數據庫。它們允許pg_restore能選擇恢復什麼,或者甚至在恢復之前對條目重排序。歸檔文件格式被設計爲在架構之間可移植。

當使用歸檔文件格式之一併與pg_restore組合時,pg_dump提供了一種靈活的歸檔和傳輸機制。pg_dump可以被用來備份整個數據庫,然後pg_restore可以被用來檢查歸檔並/或選擇數據庫的哪些部分要被恢復。最靈活的輸出文件格式是"自定義"格式(-Fc)和"目錄"格式(-Fd)。它們允許選擇和重排序所有已歸檔項、支持並行恢復並且默認是壓縮的。"目錄"格式是唯一一種支持並行轉儲的格式。

當運行pg_dump時,我們應該檢查輸出中有沒有任何警告(打印在標準錯誤上),特別是考慮到下面列出的限制。

選項
下列命令選項控制輸出的內容和格式。

dbname
指定要被轉儲的數據庫名。如果沒有指定,將使用環境變量PGDATABASE。如果環境變量也沒有設置,則使用指定給該連接的用戶名。

-a
–data-only
只轉儲數據,而不轉儲模式(數據定義)。表數據、大對象和序列值都會被轉儲。

這個選項類似於指定–section=data,但是由於歷史原因又不完全相同。

-b
–blobs
在轉儲中包括大對象。這是當–schema、–table或–schema-only被指定時的默認行爲,因此-b開關只對在有選擇性的轉儲中增加大對象有用。

-c
–clean
在輸出創建數據庫對象的命令之前輸出清除(刪除)它們的命令 (除非也指定了–if-exists,如果任何對象不存在於 目的數據庫中,恢復可能會產生一些傷害性的錯誤消息)。

這個選項只對純文本格式有意義。對於歸檔格式,你可以在調用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 格式不支持壓縮。還有,在使用 tar 格式時,表數據項的相對順序不能在恢復過程中被更改。

-j njobs
–jobs=njobs
通過同時歸檔njobs個表來運行並行轉儲。這個選項縮減了轉儲的時間,但是它也增加了數據庫服務器上的負載。你只能和目錄輸出格式一起使用這個選項,因爲這是唯一一種讓多個進程能在同一時間寫其數據的輸出格式。

pg_dump將打開njobs + 1 個到該數據庫的連接,因此確保你的max_connections設置足夠高以容納所有的連接。

在運行一次並行轉儲時請求數據庫對象上的排他鎖可能導致轉儲失敗。其原因是,pg_dump主控進程會在工作者進程將要稍後轉儲的對象上請求共享鎖,以便確保在轉儲運行時不會有人刪除它們並讓它們出錯。如果另一個客戶端接着請求一個表上的排他鎖,那個鎖將不會被授予但是會被排入隊列等待主控進程的共享鎖被釋放。因此,任何其他對該表的訪問將不會被授予或者將排在排他鎖請求之後。這包括嘗試轉儲該表的工作者進程。如果沒有任何防範措施,這可能會是一種經典的死鎖情況。要檢測這種衝突,pg_dump工作者進程使用NOWAIT選項請求另一個共享鎖。 如果該工作者進程沒有被授予這個共享鎖,其他某人必定已經在同時請求了一個排他鎖並且沒有辦法繼續轉儲,因此pg_dump除了中止轉儲之外別無選擇。

對於一個一致的備份,數據庫服務器需要支持同步的快照,在PostgreSQL 9.2中引入了一種特性。有了這種特性,即便數據庫客戶端使用不同的連接,也可以保證他們看到相同的數據集。pg_dump -j使用多個數據庫連接,它用主控進程連接到數據一次,並且爲每一個工作者任務再一次連接數據庫。如果沒有同步快照特徵,在每一個連接中不同的工作者任務將不能被保證看到相同的數據,這可能導致一個不一致的備份。

如果你希望運行一個 9.2 之前服務器的並行轉儲,你需要確保數據庫內容從主控進程連接到數據庫一直到最後一個工作者任務連接到數據庫之間不會改變。做這些最簡單的方法是在開始備份之前停止任何訪問數據庫的數據修改進程(DDL 以及 DML)。當對一個 9.2 之前的PostgreSQL服務器運行pg_dump -j時,你還需要指定–no-synchronized-snapshots參數。

-n schema
–schema=schema
只轉儲匹配schema的模式,這會選擇模式本身以及它所包含的所有對象。當沒有指定這個選項時,目標數據庫中所有非系統模式都將被轉儲。多個模式可以通過書寫多個-n開關來選擇。另外,schema參數可以被解釋爲一種根據psql’s \d命令所用的相同規則(見模式(Pattern))編寫的模式,這樣多個模式也可以通過在該模式中書寫通配字符來選擇。在使用通配符時,如果需要阻止 shell 展開通配符需要小心引用該模式,見實例。

注意: 當-n被指定時,pg_dump不會嘗試轉儲所選模式可能依賴的任何其他數據庫對象。因此,無法保證一次指定模式轉儲的結果能夠僅憑其本身被成功地恢復到一個乾淨的數據庫中。

注意: 當-n被指定時,非模式對象(如二進制大對象)不會被轉儲。你可以使用–blobs開關將二進制大對象加回到該轉儲中。

-N schema
–exclude-schema=schema
不轉儲匹配schema模式的任何模式。該模式被根據-n所用的相同規則被解釋。-N可以被給定多次來排除匹配幾個模式中任意一個的模式。

當-n和-N都被給定時,該行爲是隻轉儲匹配至少一個-n開關但是不匹配-N開關的模式。如果只有-N而沒有-n,那麼匹配-N的模式會被從一個正常轉儲中排除。

-o
–oids
轉儲對象標識符(OID)作爲每個表數據的一部分。如果你的應用以某種方式引用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"的使用上有不同的含義)。

要爲數據庫中表的一個子集排除表數據,見–exclude-table-data。

-S username
–superuser=username
指定要在禁用觸發器時使用的超級用戶的用戶名。只有使用–disable-triggers時,這個選項才相關(通常,最好省去這個選項,而作爲超級用戶來啓動結果腳本來取而代之)。

-t table
–table=table
只轉儲名字匹配table的表,"table"還可以包括視圖、物化視圖、序列和外部表。通過寫多個-t開關可以選擇多個表。另外,table參數可以被解釋爲一種根據psql’s \d命令所用的相同規則(見模式(Pattern))編寫的模式,這樣多個表也可以通過在該模式中書寫通配字符來選擇。在使用通配符時,如果需要阻止 shell 展開通配符需要小心引用該模式,見實例。

當-t被使用時,-n和-N開關不會有效果,因爲被-t選擇的表將被轉儲而無視那些開關,並且非表對象將不會被轉儲。

注意: 當-t被指定時,pg_dump不會嘗試轉儲所選表可能依賴的任何其他數據庫對象。因此,無法保證一次指定錶轉儲的結果能夠僅憑其本身被成功地恢復到一個乾淨的數據庫中。

注意: -t開關的行爲不完全向前兼容 8.2 之前的PostgreSQL版本。以前,寫-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
防止轉儲訪問特權(授予/收回命令)。

-Z 0…9
–compress=0…9
指定要使用的壓縮級別。零意味着不壓縮。對於自定義歸檔格式,這會指定個體表數據段的壓縮,並且默認是進行中等級別的壓縮。對於純文本輸出,設置一個非零壓縮級別會導致整個輸出文件被壓縮,就好像它被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時指定這個選項。

–enable-row-security
只有在轉儲具有行安全性的表的內容時,這個選項才相關。默認情況下, pg_dump將把 row_security設置爲 off 來確保從該表中轉儲 出所有的數據。如果用戶不具有足夠能繞過行安全性的特權,那麼會拋出 一個錯誤這個參數指示pg_dump將 row_security設置爲 on,允許用戶只轉儲該表中 它們能夠訪問到的部分內容。

–exclude-table-data=table
不轉儲匹配table模式的任何表中的數據。該模式根據-t的相同規則被解釋。–exclude-table-data可以被給定多次來排除匹配多個模式的表。當你需要一個特定表的定義但不想要其中的數據時,這個選項就有用了。

要排除數據庫中所有表的數據,見–schema-only。

–if-exists
時間條件性命令(即增加一個IF EXISTS子句)來清除數據庫和其他對象。 只有同時指定了–clean時,這個選項纔可用。

–inserts
將數據轉儲爲INSERT命令(而不是COPY)。這將使得恢復非常慢,這主要用於使轉儲能夠被載入到非PostgreSQL數據庫中。不過,由於這個選項爲每一行都產生一個單獨的命令,重載一行時的一個錯誤只會導致那一行被丟失而不是整個表內容丟失。注意如果你已經重新安排了列序,該恢復可能會一起失敗。–column-inserts選項對於列序改變是安全的,但是會更慢。

–lock-wait-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
強制引用所有標識符。當從PostgreSQL主版本與pg_dump不同的服務器上轉儲一個數據庫時或者當輸出準備載入到一個具有不同主版本的服務器時,推薦使用這個選項。默認情況下,pg_dump只對在其主版本中是被保留詞的標識符加上引號。在轉儲其他版本服務器時,這種默認行爲有時會導致兼容性問題,因爲那些版本可能具有些許不同的被保留詞集合。使用–quote-all-identifiers能阻止這種問題,但代價是轉儲腳本更難閱讀。

–section=sectionname
只轉儲命名節。節的名稱可以是pre-data、data或post-data。這個選項可以被指定多次來選擇多個節。默認是轉儲所有節。

數據節包含真正的表數據、大對象內容和序列值。數據後項包括索引、觸發器、規則和除了已驗證檢查約束之外的約束的定義。數據前項包括所有其他數據定義項。

–serializable-deferrable
爲轉儲使用一個可序列化事務,以保證所使用的快照與後來的數據庫狀態是一致的。但是這樣做是在事務流中等待一個點,在該點上不能存在異常,這樣就不會有轉儲失敗或者導致其他事務帶着serialization_failure回滾的風險。關於事務隔離和併發控制詳見第 13 章。

對於一個只爲災難恢復存在的轉儲,這個選項沒什麼益處。如果一個轉儲被用來在原始數據庫持續被更新期間載入一份用於報表或其他只讀負載的數據庫拷貝時,這個選項就有所幫助。如果沒有這個選項,轉儲可能會反映一個與最終提交事務的任何執行序列都不一致的狀態。例如,如果使用了批處理技術,一個批處理在轉儲中可以顯示爲關閉,而其中的所有項都不出現。

如果 pg_dump 被啓動時沒有讀寫事務在活動,則這個選項沒有什麼不同。如果有讀寫事務在活動,該轉儲的啓動可能會被延遲一段不確定的時間。一旦開始運行,有沒有這個開關的表現是相同的。

–snapshot=snapshotname
在做一個數據庫的轉儲時指定一個同步的快照(詳見 表 9-81)。

在需要把轉儲和一個邏輯複製槽(見第 47 章) 或者一個併發會話同步時可以用上這個選項。

在並行轉儲的情況下,將使用這個選項指定的快照名而不是取一個新快照。

–strict-names
要求每一個模式(-n/–schema)和表(-t/–table)限定符匹配要轉儲的數據庫中至少一個模式/表。注意,如果沒有找到有這樣的模式/表限定符匹配,即便沒有–strict-names,pg_dump也將生成一個錯誤。

這個選項對-N/–exclude-schema、-T/–exclude-table或者–exclude-table-data沒有效果。無法匹配任何對象的排除模式不會被當作錯誤。

–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字符串。詳見第 32.1 節。

-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(見第 32.14 節)支持的環境變量。

診斷
pg_dump在內部執行SELECT語句。如果你運行pg_dump時出現問題,確定你能夠從正在使用的數據庫中選擇信息,例如psql。此外,libpq前端-後端庫所使用的任何默認連接設置和環境變量都將適用。

pg_dump的數據庫活動會被統計收集器正常地收集。如果不想這樣,你可以通過PGOPTIONS或ALTER USER命令設置參數track_counts爲假。

註解
如果你的數據庫集簇對於template1數據庫有任何本地添加,要注意將pg_dump的輸出恢復到一個真正的空數據庫。否則你很可能由於以增加對象的重複定義而得到錯誤。要創建一個不帶任何本地添加的空數據庫,從template0而不是template1複製它,例如:

CREATE DATABASE foo WITH TEMPLATE template0;
當一個只含數據的轉儲被選中並且使用了選項–disable-triggers時,pg_dump在開始插入數據之前會發出命令禁用用戶表上的觸發器,並且接着在數據被插入之後發出命令重新啓用它們。如果恢復中途被停止,系統目錄可能會停留在一種錯誤狀態。

pg_dump產生的轉儲文件不包含優化器用來做出查詢計劃決定的統計信息。因此,在從一個轉儲文件恢復後運行ANALYZE來確保最優性能是明智的,詳見第 24.1.3 節和第 24.1.6 節。轉儲文件也不包含任何ALTER DATABASE … SET命令,這些設置會與數據庫用戶及其他安裝設置一起被pg_dumpall轉儲。

因爲pg_dump被用來傳輸數據到更新版本的PostgreSQL,pg_dump的輸出被認爲可以載入到比pg_dump版本更新的PostgreSQL服務器中。pg_dump也能夠從比其版本更舊的PostgreSQL服務器中轉儲(當前支持回退到版本 7.0)。不過,pg_dump無法從比起主版本號更新的PostgreSQL服務器中轉儲,它甚至將拒絕冒着創建一個非法轉儲的風險嘗試。還有,不保證pg_dump的輸出能被載入到一個更舊主版本的服務器 — 即使該轉儲是從該版本的服務器中被取得也不行。將一個轉儲文件載入到一個更舊的服務器可能需要手工編輯該轉儲文件來移除舊服務器無法理解的語法。在跨版本的情況下,推薦使用–quote-all-identifiers選項,因爲它可以避免因爲不同PostgreSQL版本間的保留詞列表變化而發生問題。

實例
要把一個數據庫mydb轉儲到一個 SQL 腳本文件:

$ pg_dump mydb > db.sql
要把這樣一個腳本重新載入到一個(新創建的)名爲newdb的數據庫中:

$ psql -d newdb -f db.sql
要轉儲一個數據庫到一個自定義格式歸檔文件:

$ pg_dump -Fc mydb > db.dump
要轉儲一個數據庫到一個目錄格式的歸檔:

$ pg_dump -Fd mydb -f dumpdir
要用 5 個並行的工作者任務轉儲一個數據庫到一個目錄格式的歸檔:

$ pg_dump -Fd mydb -j 5 -f dumpdir
要把一個歸檔文件重新載入到一個(新創建的)名爲newdb的數據庫:

$ pg_restore -d newdb db.dump
要轉儲一個名爲mytab的表:

$ pg_dump -t mytab mydb > db.sql
要轉儲detroit模式中名稱以emp開始的所有表,排除名爲employee_log的表:

$ pg_dump -t ‘detroit.emp*’ -T detroit.employee_log mydb > db.sql
要轉儲名稱以east或者west開始並且以gsm結束的所有模式,排除名稱包含詞test的任何模式:

$ pg_dump -n ‘eastgsm’ -n 'westgsm’ -N ‘test’ mydb > db.sql
同樣,用正則表達式記號法來合併開關:

$ pg_dump -n ‘(east|west)*gsm’ -N ‘test’ mydb > db.sql
要轉儲除了名稱以ts_開頭的表之外的所有數據庫對象:

$ pg_dump -T ‘ts_*’ mydb > db.sql
要在-t和相關開關中指定一個大寫形式或混合大小寫形式的名稱,你需要雙引用該名稱,否則它會被摺疊到小寫形式(見模式(Pattern))。但是雙引號對於 shell 是特殊的,所以反過來它們必須被引用。因此,要轉儲一個有混合大小寫名稱的表,你需要類似這樣的東西:

$ pg_dump -t ““MixedCaseName”” mydb > mytab.sql

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章