PostgreSQL7.0手冊-用戶手冊-20. 應用 - pg_dump
2019-09-08 23:33:30
供稿:網友
pg_dump
名稱
pg_dump ― 將一個 Postgres 數據庫抽出到一個腳本文件
語法
pg_dump [ dbname ]
pg_dump [ -h host ] [ -p port ]
[ -t table ]
[ -a ] [ -c ] [ -d ] [ -D ] [ -i ] [ -n ] [ -N ]
[ -o ] [ -s ] [ -u ] [ -v ] [ -x ]
[ dbname ]
輸入
pg_dump 接受下面的命令行參數:
dbname
聲明將要抽取的數據庫名.dbname 缺省為 USER 環境變量的值.
-a
只輸出數據,不輸出結構(表定義).
-c
創建前刪除表定義。
-d
將數據輸出為合適的插入字串.
-D
將數據作為帶字段名的插入語句輸出.
-i
忽略在 pg_dump 和數據庫服務器之間的版本差別.因為 pg_dump 知道許多關于系統表的信息,任何給定版本的 pg_dump 只能和對應的數據庫服務器版本一并使用.如果你需要跨越版本檢查時才使用這個選項(而且如果 pg_dump 失效,別說我沒警告你).
-n
除非絕對必需,禁止標識周圍的雙引號.如果有保留字用于標識符,這么做有可能在裝載輸出的數據時導致麻煩.這是 v6.4以前的 pg_dump 缺省特性。
-N
在標識周圍包括雙引號。這是缺省?!?
-o
為每個表都輸出對象標識(OID).
-s
只輸出表結構(定義),不輸出數據.
-t table
只輸出表 table 的數據.
-u
使用口令認證.提示輸入用戶名和口令.
-v
聲明冗余模式
-x
避免輸出 ACL(賦予/撤消 命令)和表的所有者關系信息.
pg_dump 同樣接受下面的命令行參數作為聯接參數:
-h host
聲明 postmaster 在運行的機器的主機名.缺省是使用本地Unix主控套接字,而不是一個 IP 聯接.
-p port
聲明 postmaster 正在偵聽并等待聯接的TCP/IP 端口或本地 Unix 主控套接字文件句柄.缺省的端口號是5432,或者環境變量 PGPORT 的值(如果存在).
-u
使用口令認證,提示輸入 username 和 password.
輸出
pg_dump 將創建一個文件或輸出到 stdout?!?
Connection to database 'template1' failed. connectDB() failed: Is the postmaster running and accepting connections at 'UNIX Socket' on port 'port'?
pg_dump 無法與指定主機和端口上的 postmaster 進程相聯.如果看到這條信息,確認 postmaster 正在給定的主機上你所聲明的端口上運行.如果你的節點使用了認證系統,確認你已經獲取了認證所須的信息.
Connection to database 'dbname' failed. FATAL 1: SetUserId: user 'username' is not in 'pg_shadow'
你在 pg_shadow 和 里沒有有效的記錄,因而不允許訪問 Postgres.請與你的 Postgres 管理員聯系.
dumpSequence(table): SELECT failed
你沒有讀數據庫的權限.請與你的 Postgres 節點管理員聯系.
注意:pg_dump 在內部使用 SELECT 語句.如果你運行 pg_dump 時碰到問題,確認你能夠使用象 psql 這樣的程序從數據庫選擇.
描述
pg_dump 是一個將 Postgres 數據庫輸出到一個包含查詢命令的腳本文件的工具.腳本文件是文本格式并且可以用于重建數據庫,甚至可以在其他機器或其他硬件體系上.pg_dump 將輸出用于重建所有用戶定義的類型,函數,表,索引聚集和操作符所必須的查詢語句.另外,所有數據是用文本格式拷貝出來的,因而也可以很容易地拷貝回去,也很容易用工具編輯.
pg_dump 在從 Postgres 節點向另一個節點一個轉移數據時很有用.在運行pg_dump 后,我們應該檢查輸出腳本中的任何警告,尤其是下面列出的限制.
注意
pg_dump 有一些限制.限制主要源于從系統表中抽取某些專有信息的困難性.
pg_dump 不能理解部分索引.原因與上面所述相同;部分索引謂詞都作為規劃存儲.( predicates are stored as plans.)
pg_dump 不能處理大對象.大對象被忽略因而必須手工操作.
當只做數據輸出時,pg_dump 使用查詢在插入數據前關閉用戶表上的觸發器以及在重新插入數據后恢復.如果重載在途中停止,系統表可能停留在錯誤的狀態.
用法
輸出與用戶名同名的數據庫:
% pg_dump > db.out
要重載該數據庫:
% psql -e database < db.out