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