版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、零、口令文件: 在 給出其它PostgreSQL客戶端命令之前,我們需要先介紹一下PostgreSQL中的口令文件。之所以在這里提前說明該文件,是因為我們在后面的示 例代碼中會大量應(yīng)用該文件,從而保證我們的腳本能夠自動化完成。換句話說,如果在客戶端命令執(zhí)行時沒有提供該文件,PostgreSQL的所有客戶端命令 均會被口令輸入提示中斷。 在當前用戶的HOME目錄下,我們需要手工創(chuàng)建文件名為 .pgpass的口令文件,這樣就可以在我們連接PostgreSQL服務(wù)器時,客戶端命令自動讀取該文件已獲得登錄時所需要的口令信息。該文件的格式如下: hostname:port:database:userna
2、me:password 以上數(shù)據(jù)是用冒號作為分隔符,總共分為五個字段,分別表示服務(wù)器主機名(IP)、服務(wù)器監(jiān)聽的端口號、登錄訪問的數(shù)據(jù)庫名、登錄用戶名和密碼,其中前四個字段都可以使用星號(*)來表示匹配任意值。見如下示例: / cat .pgpass *:5432:postgres:postgres:123456 CTRL+D #.pgpass文件的權(quán)限必須為0600,從而防止任何全局或者同組的用戶訪問,否則這個文件將被忽略。 / chmod 0600 .pgpass 在學習后面的客戶端命令之前,我們需要根據(jù)自己的應(yīng)用環(huán)境手工創(chuàng)建該文件, 以便后面所有的示例代碼都會用到該口令文件,這樣它們就都
3、可以以批處理的方式自動完成。一、createdb: 創(chuàng)建一個新的PostgreSQL數(shù)據(jù)庫。該命令的使用方式如下: createdb option. dbname description 1. 命令行選項列表:選項說明-D(-tablespace=tablespace)指定數(shù)據(jù)庫的缺省表空間。-e(-echo)回顯createdb生成的命令并且把它發(fā)送到服務(wù)器。-E(-encoding=encoding)指定用于此數(shù)據(jù)庫的字符編碼方式。-l(-locale=locale)指定用于此數(shù)據(jù)庫的本地化設(shè)置。-O(-owner=owner)指定新建數(shù)據(jù)庫的擁有者,如果未指定此選項,該值為當前登錄的用戶
4、。 -T(-template=template)指定創(chuàng)建此數(shù)據(jù)庫的模板數(shù)據(jù)庫。-h(-host=host)指定PostgreSQL服務(wù)器的主機名。-p(-port=port)指定服務(wù)器的偵聽端口,如不指定,則為缺省的5432。-U(-username=username)本次操作的登錄用戶名,如果-O選項沒有指定,此數(shù)據(jù)庫的Owner將為該登錄用戶。-w(-no-password)如果當前登錄用戶沒有密碼,可以指定該選項直接登錄。 2. 應(yīng)用示例: #1. 以postgres的身份登錄。(詳情參照上面口令文件的內(nèi)容) / psql #2. 創(chuàng)建表空間。 postgres=# CREATE TAB
5、LESPACE my_tablespace LOCATION /opt/PostgreSQL/9.1/mydata; CREATE TABLESPACE #3. 創(chuàng)建新數(shù)據(jù)庫的owner。 postgres=# CREATE ROLE myuser LOGIN PASSWORD 123456; CREATE ROLE postgres=# q #4. 創(chuàng)建新數(shù)據(jù)庫,其中本次連接的登錄用戶為postgres,新數(shù)據(jù)庫的owner為myuser, 表空間為my_tablespace,新數(shù)據(jù)庫名為mydatabase。 / createdb -U postgres -O myuser -D my_t
6、ablespace -e mydatabase CREATE DATABASE mydatabase OWNER myuser TABLESPACE my_tablespace; #5. 重新登錄,通過查詢系統(tǒng)表查看該數(shù)據(jù)庫是否創(chuàng)建成功,以及表空間和所有者是否一致。 / psql postgres=# SELECT datname,rolname,spcname FROM pg_database db, pg_authid au, pg_tablespace ts WHERE datname = mydatabase AND datdba = au.oid AND dattablespace
7、= ts.oid; datname | rolname | spcname -+-+- mydatabase | myuser | my_tablespace (1 row)二、dropdb: 刪除一個現(xiàn)有PostgreSQL數(shù)據(jù)庫。 dropdb option. dbname 1. 命令行選項列表:選項說明-e(-echo)回顯dropdb生成的命令并且把它發(fā)送到服務(wù)器。-i(-interactive)在做任何破壞性動作前提示。 -q(-quiet)不顯示響應(yīng)。-h(-host=host)指定PostgreSQL服務(wù)器的主機名。-p(-port=port)指定服務(wù)器的監(jiān)聽端口,如不指定,則為
8、缺省的5432。-U(-username=username)本次操作的登錄用戶名。-w(-no-password)如果當前登錄用戶沒有密碼,可以指定該選項直接登錄。 2. 應(yīng)用示例: #以postgres的身份連接服務(wù)器,刪除mydatabase數(shù)據(jù)庫。 / dropdb -U postgres -e mydatabase DROP DATABASE mydatabase; #通過查看系統(tǒng)表驗證該數(shù)據(jù)庫是否已經(jīng)被刪除。 / psql postgres=# SELECT count(*) FROM pg_database WHERE datname = mydatabase; count - 0
9、 (1 row)三、reindexdb: 為一個指定的PostgreSQL數(shù)據(jù)庫重建索引。 reindexdb connection-option. -table | -t table -index | -i index dbname reindexdb connection-option. -all | -a reindexdb connection-option. -system | -s dbname 1. 命令行選項列表:選項說明-a(-all)重建整個數(shù)據(jù)庫的索引。-e(-echo)回顯reindexdb生成的命令并且把它發(fā)送到服務(wù)器。-i(-index=index)僅重建指定的索引
10、。-q(-quiet)不顯示響應(yīng)。-s(-system)重建數(shù)據(jù)庫系統(tǒng)表的索引。-t(-table=table)僅重建指定數(shù)據(jù)表的索引。-h(-host=host)指定PostgreSQL服務(wù)器的主機名。-p(-port=port)指定服務(wù)器的監(jiān)聽端口,如不指定,則為缺省的5432。-U(-username=username)本次操作的登錄用戶名。-w(-no-password)如果當前登錄用戶沒有密碼,可以指定該選項直接登錄。 2. 應(yīng)用示例: #僅重建數(shù)據(jù)表testtable上的全部索引。 / reindexdb -t testtable -e -U postgres postgres R
11、EINDEX TABLE testtable; #僅重建指定索引testtable_idx / reindexdb -i testtable_idx -e -U postgres postgres REINDEX INDEX testtable_idx; #重建指定數(shù)據(jù)庫mydatabase的全部索引。 / reindexdb mydatabase四、vacuumdb: 收集垃圾并且分析一個PostgreSQL數(shù)據(jù)庫。 vacuumdb -options -full | -f -verbose | -v -analyze | -z -t table (column ,.) dbname vac
12、uumdb -options -all | -a -full | -f -verbose | -v -analyze | -z 1. 命令行選項列表:選項說明-a(-all)清理所有數(shù)據(jù)庫。 -e(-echo)回顯vacuumdb生成的命令并且把它發(fā)送到服務(wù)器。-f(-full)執(zhí)行完全清理。-q(-quiet)不顯示響應(yīng)。-t table (column ,.)僅僅清理或分析指定的數(shù)據(jù)表,字段名只是在與-analyze選項聯(lián)合使用時才需要聲明。-v(-verbose)在處理過程中打印詳細信息。-z(-analyze)計算用于規(guī)劃器的統(tǒng)計值。-h(-host=host)指定PostgreSQL
13、服務(wù)器的主機名。-p(-port=port)指定服務(wù)器的監(jiān)聽端口,如不指定,則為缺省的5432。-U(-username=username)本次操作的登錄用戶名。-w(-no-password)如果當前登錄用戶沒有密碼,可以指定該選項直接登錄。 2. 應(yīng)用示例: #清理整個數(shù)據(jù)庫mydatabase。 / vacuumdb -e mydatabase VACUUM; #清理并分析postgres數(shù)據(jù)庫中的testtable表。 / vacuumdb -e -analyze -table testtable postgres VACUUM ANALYZE testtable; #清理并分析pos
14、tgres數(shù)據(jù)庫中的testtable表的i字段。 / vacuumdb -e -analyze -t testtable(i) postgres VACUUM ANALYZE testtable(i);五、createuser: 定義一個新的PostgreSQL用戶帳戶,需要說明的是只有超級用戶或者是帶有CREATEROLE權(quán)限的用戶才可以執(zhí)行該命令。如果希望創(chuàng)建的是超級用戶,那么只能以超級用戶的身份執(zhí)行該命令,換句話說,帶有CREATEROLE權(quán)限的普通用戶無法創(chuàng)建超級用戶。該命令的使用方式如下: createuser option. username 1. 命令行選項列表:選項說明-c
15、number設(shè)置新創(chuàng)建用戶的最大連接數(shù),缺省為沒有限制。-d(-createdb)允許該新建用戶創(chuàng)建數(shù)據(jù)庫。-D(-no-createdb)禁止該新建用戶創(chuàng)建數(shù)據(jù)庫。 -e(-echo)回顯createuser生成的命令并且把它發(fā)送到服務(wù)器。-E(-encrypted)對保存在數(shù)據(jù)庫里的用戶口令加密。如果沒有聲明, 則使用缺省值。 -i(-inherit)新創(chuàng)建的角色將自動繼承它的組角色的權(quán)限。-I(-no-inherit)新創(chuàng)建的角色不會自動繼承它的組角色的權(quán)限。-l(-login)新角色將被授予登錄權(quán)限,該選項為缺省選項。-L(-no-login)新角色沒有被授予登錄權(quán)限。-N(-unen
16、crypted)不對保存在數(shù)據(jù)庫里的用戶口令加密。如果沒有聲明, 則使用缺省值。-P(-pwprompt)如果給出該選項,在創(chuàng)建用戶時將提示設(shè)置口令。-r(-createrole)新角色被授予創(chuàng)建數(shù)據(jù)庫的權(quán)限。-R(-no-createrole)新角色沒有被授予創(chuàng)建數(shù)據(jù)庫的權(quán)限。-s(-superuser)新角色為超級用戶。-S(-no-superuser)新角色不是超級用戶。-h(-host=host)指定PostgreSQL服務(wù)器的主機名。-p(-port=port)指定服務(wù)器的監(jiān)聽端口,如不指定,則為缺省的5432。-U(-username=username)本次操作的登錄用戶名。-w(
17、-no-password)如果當前登錄用戶沒有密碼,可以指定該選項直接登錄。 2. 應(yīng)用示例: # 對于有些沒有缺省設(shè)置的選項,如-(d/D)、-(s/S)和-(r/R),如果在命令行中沒有直接指定,那么在執(zhí)行該命令是將會給出提示信息。 # 需要注意的是該提示將會掛起自動化腳本,直到輸入后命令才會繼續(xù)執(zhí)行。 / createuser -U postgres myuser Shall the new role be a superuser? (y/n) n Shall the new role be allowed to create databases? (y/n) y Shall the n
18、ew role be allowed to create more new roles? (y/n) n CREATE ROLE myuser NOSUPERUSER CREATEDB NOCREATEROLE INHERIT LOGIN; # 通過psql登錄后查看系統(tǒng)視圖,以驗證該用戶是否成功創(chuàng)建,以及新角色的權(quán)限是否正確。 / psql postgres=# SELECT rolname,rolsuper,rolinherit,rolcreaterole,rolcreatedb,rolcanlogin FROM pg_roles WHERE rolname = myuser; rolna
19、me | rolsuper | rolinherit | rolcreaterole | rolcreatedb | rolcanlogin -+-+-+-+-+- myuser | f | t | f | t | t (1 row) # 為了保證自動化腳本不會被該命令的提示掛起,我們需要在執(zhí)行該命令時指定所有沒有缺省值的選項。 / createuser -U postgres -e -S -D -R myuser2 CREATE ROLE myuser2 NOSUPERUSER NOCREATEDB NOCREATEROLE INHERIT LOGIN; # 我們可以在創(chuàng)建用戶時即刻指定該用
20、戶的密碼,該操作由-P選項完成,然而這樣的用法一定會掛起自動化腳本, # 因此我們可以采用一種折中的辦法,即在創(chuàng)建用戶時不指定密碼,在自動化腳本執(zhí)行成功后再手工該用戶的密碼。 / createuser -P -s -e myuser3 Enter password for new role: Enter it again: CREATE ROLE myuser3 PASSWORD md5fe54c4f3129f2a766f53e4f4c9d2a698 SUPERUSER CREATEDB CREATEROLE INHERIT LOGIN;六、dropuser: 刪除一個PostgreSQL用戶
21、帳戶,需要說明的是只有超級用戶或帶有CREATEROLE權(quán)限的用戶可以執(zhí)行該命令,如果要刪除超級用戶,只能通過超級用戶的身份執(zhí)行該命令。該命令的使用方式如下: dropuser option. username 1. 命令行選項列表:選項說明-e(-echo)回顯dropuser生成的命令并且把它發(fā)送到服務(wù)器。-i(-interactive)在做任何破壞性動作前提示。 -h(-host=host)指定PostgreSQL服務(wù)器的主機名。-p(-port=port)指定服務(wù)器的監(jiān)聽端口,如不指定,則為缺省的5432。-U(-username=username)本次操作的登錄用戶名。-w(-no-
22、password)如果當前登錄用戶沒有密碼,可以指定該選項直接登錄。 2. 應(yīng)用示例: # 直接刪除指定用戶。 / dropuser -e myuser3 DROP ROLE myuser3; # 在刪除指定用戶時,該命令會給出提示信息,以免誤操作。 / dropuser -e -i myuser2 Role myuser2 will be permanently removed. Are you sure? (y/n) y DROP ROLE myuser2;七、pg_dump: pg_dump是一個用于備份PostgreSQL數(shù)據(jù)庫的工具。它甚至可以在數(shù)據(jù)庫正在并發(fā)使用時進行完整一致的備份
23、,而不會阻塞其它用戶對數(shù)據(jù)庫的訪 問。該工具生成的轉(zhuǎn)儲格式可以分為兩種,腳本和歸檔文件。其中腳本格式是包含許多SQL命令的純文本格式,這些SQL命令可以用于重建該數(shù)據(jù)庫并將之恢復(fù) 到生成此腳本時的狀態(tài),該操作需要使用psql來完成。至于歸檔格式,如果需要重建數(shù)據(jù)庫就必須和pg_restore工具一起使用。在重建過程中,可以 對恢復(fù)的對象進行選擇,甚至可以在恢復(fù)之前對需要恢復(fù)的條目進行重新排序。該命令的使用方式如下: pg_dump option. dbname 1. 命令行選項列表:選項說明-a(-data-only)只輸出數(shù)據(jù),不輸出模式(數(shù)據(jù)對象的定義)。這個選項只是對純文本格式有意義。對
24、于歸檔格式,你可以在調(diào)用 pg_restore時指定選項。 -b(-blobs)在dump中包含大對象。-c(-clean)在輸出創(chuàng)建數(shù)據(jù)庫對象的SQL命令之前,先輸出刪除該數(shù)據(jù)庫對象的SQL命令。這個選項只是對純文本格式有意義。對于歸檔格式,你可以在調(diào)用 pg_restore時指定選項。 -C(-create)先輸出創(chuàng)建數(shù)據(jù)庫的命令,之后再重新連接新創(chuàng)建的數(shù)據(jù)庫。對于此種格式的腳本,在運行之前是和哪個數(shù)據(jù)庫進行連接就不這么重要了。這個選項只是對純文本格式有意義。對于歸檔格式,你可以在調(diào)用pg_restore時指定選項。-E encoding以指定的字符集創(chuàng)建該dump文件。-f file輸出
25、到指定文件,如果沒有該選項,則輸出到標準輸出。-F formatp(plain): 純文本格式的SQL腳本文件(缺省)。c(custom): 輸出適合于pg_restore的自定義歸檔格式。 這是最靈活的格式,它允許對裝載的數(shù)據(jù)和對象定義進行重新排列。這個格式缺省的時候是壓縮的。t(tar):輸出適合于 pg_restore的tar歸檔文件。使用這個歸檔允許在恢復(fù)數(shù)據(jù)庫時重新排序和/或把數(shù)據(jù)庫對象排除在外。同i時也可能可以在恢復(fù)的時候限制對哪些數(shù)據(jù)進行恢復(fù)。-n schema只轉(zhuǎn)儲schema的內(nèi)容。如果沒有聲明該選項,目標數(shù)據(jù)庫中的所有非系統(tǒng)模式都會被轉(zhuǎn)儲。該選項也可以被多次指定,以指定不同
26、pattern的模式。-N schema不轉(zhuǎn)儲匹配schema的內(nèi)容,其他規(guī)則和-n一致。-o(-oids)作為數(shù)據(jù)的一部分,為每個表都輸出對象標識(OID)。-O(-no-owner)不輸出設(shè)置對象所有權(quán)的SQL命令。-s(-schema-only)只輸出對象定義(模式),不輸出數(shù)據(jù)。 -S username指定關(guān)閉觸發(fā)器時需要用到的超級用戶名。它只有在使用-disable-triggers的時候才有關(guān)系。-t table只輸出表的數(shù)據(jù)。很可能在不同模式里面有多個同名表,如果這樣,那么所有匹配的表都將被轉(zhuǎn)儲。通過多次指定該參數(shù),可以一次轉(zhuǎn)儲多張表。這里還可以指定和psql一樣的pattern
27、,以便匹配更多的表。(關(guān) 于pattern,基本的使用方式是可以將它視為unix的通配符,即*表示任意字符,?表示任意單個字符,.(dot)表示schema和object 之間的分隔符,如a*.b*,表示以a開頭的schema和以b開頭的數(shù)據(jù)庫對象。如果沒有.(dot),將只是表示數(shù)據(jù)庫對象。這里也可以使用基本的正 則表達式,如0-9表示數(shù)字。)-T table排除指定的表,其他規(guī)則和-t選項一致。-x(-no-privileges)不導(dǎo)出訪問權(quán)限信息(grant/revoke命令)。-Z 0.9聲明在那些支持壓縮的格式中使用的壓縮級別。 (目前只有自定義格式支持壓縮)-column-inse
28、rts導(dǎo)出數(shù)據(jù)用insert into table_name(columns_list) values(values_list)命令表示,這樣的操作相對其它操作而言是比較慢的,但是在特殊情況下,如數(shù)據(jù)表字段的位置有可能發(fā)生變化或有新的 字段插入到原有字段列表的中間等。由于columns_list被明確指定,因此在導(dǎo)入時不會出現(xiàn)數(shù)據(jù)被導(dǎo)入到錯誤字段的問題。-inserts導(dǎo)出的數(shù)據(jù)用insert命令表示,而不是copy命令。即便使用insert要比copy慢一些,但是對于今后導(dǎo)入到其他非PostgreSQL的數(shù)據(jù)庫是比較有意義的。-no-tablespaces不輸出設(shè)置表空間的命令,如果帶有這個
29、選項,所有的對象都將恢復(fù)到執(zhí)行pg_restore時的缺省表空間中。-no-unlogged-table-data對于不計入日志(unlogged)的數(shù)據(jù)表,不會導(dǎo)出它的數(shù)據(jù),至于是否導(dǎo)出其Schema信息,需要依賴其他的選項而定。-h(-host=host)指定PostgreSQL服務(wù)器的主機名。-p(-port=port)指定服務(wù)器的偵聽端口,如不指定,則為缺省的5432。-U(-username=username)本次操作的登錄用戶名,如果-O選項沒有指定,此數(shù)據(jù)庫的Owner將為該登錄用戶。-w(-no-password)如果當前登錄用戶沒有密碼,可以指定該選項直接登錄。 2. 應(yīng)用示
30、例: # -h: PostgreSQL服務(wù)器的主機為192.168.149.137。 # -U: 登錄用戶為postgres。 # -t: 導(dǎo)出表名以test開頭的數(shù)據(jù)表,如testtable。 # -a: 僅僅導(dǎo)出數(shù)據(jù),不導(dǎo)出對象的schema信息。 # -f: 輸出文件是當前目錄下的my_dump.sql # mydatabase是此次操作的目標數(shù)據(jù)庫。 / pg_dump -h 192.168.149.137 -U postgres -t test* -a -f ./my_dump.sql mydatabase #-c: 先輸出刪除數(shù)據(jù)庫對象的SQL命令,在輸出創(chuàng)建數(shù)據(jù)庫對象的SQL命令
31、,這對于部署干凈的初始系統(tǒng)或是搭建測試環(huán)境都非常方便。 / pg_dump -h 192.168.220.136 -U postgres -c -f ./my_dump.sql mydatabase #導(dǎo)出mydatabase數(shù)據(jù)庫的信息。在通過psql命令導(dǎo)入時可以重新指定數(shù)據(jù)庫,如:/ psql -d newdb -f my_dump.sql / pg_dump -h 192.168.220.136 -U postgres -f ./my_dump.sql mydatabase #導(dǎo)出模式為my_schema和以test開頭的數(shù)據(jù)庫對象名,但是不包括my_schema.employee_l
32、og對象。 / pg_dump -t my_schema.test* -T my_schema.employee_log mydatabase my_dump.sql #導(dǎo)出east和west模式下的所有數(shù)據(jù)庫對象。下面兩個命令是等同的,只是后者使用了正則。 / pg_dump -n east -n west mydatabase -f my_dump.sql / pg_dump -n (east|west) mydatabase -f my_dump.sql八、pg_restore: pg_restore用于恢復(fù)pg_dump導(dǎo)出的任何非純文本格式的文件,它將數(shù)據(jù)庫重建成保存它時的狀態(tài)。對于
33、歸檔格式的文件,pg_restore可以進行有選擇的恢復(fù),甚至也可以在恢復(fù)前重新排列數(shù)據(jù)的順序。 pg_restore可以在兩種模式下操作。如果指定數(shù)據(jù)庫,歸檔將直接恢復(fù)到該數(shù)據(jù)庫。否則,必須先手工創(chuàng)建數(shù)據(jù)庫,之后再通過pg_restore恢復(fù)數(shù)據(jù)到該新建的數(shù)據(jù)庫中。該命令的使用方式如下: pg_restore option. filename 1. 命令行選項列表:選項說明filename指定要恢復(fù)的備份文件,如果沒有聲明,則使用標準輸入。-a(-data-only)只恢復(fù)數(shù)據(jù),而不恢復(fù)表模式(數(shù)據(jù)對象定義)。-c(-clean)創(chuàng)建數(shù)據(jù)庫對象前先清理(刪除)它們。-C(-create)在恢
34、復(fù)數(shù)據(jù)庫之前先創(chuàng)建它。(在使用該選項時,數(shù)據(jù)庫名需要由-d選項指定,該選項只是執(zhí)行最基本的CREATE DATABASE命令。需要說明的是,歸檔文件中所有的數(shù)據(jù)都將恢復(fù)到歸檔文件里指定的數(shù)據(jù)庫中)。-d dbname與數(shù)據(jù)庫dbname建立連接并且直接恢復(fù)數(shù)據(jù)到該數(shù)據(jù)庫中。-e(-exit-on-error)如果在向數(shù)據(jù)庫發(fā)送SQL命令的時候遇到錯誤,則退出。缺省是繼續(xù)執(zhí)行并且在恢復(fù)結(jié)束時顯示一個錯誤計數(shù)。-F format指定備份文件的格式。由于pg_restore會自動判斷格式,因此指定格式并不是必須的。如果指定,它可以是以下格式之一:t(tar):使用該格式允許在恢復(fù)數(shù)據(jù)庫時重新排序和/
35、或把表模式信息排除出去,同時還可能在恢復(fù)時限制裝載的數(shù)據(jù)。 c(custom):該格式是來自pg_dump的自定義格式。這是最靈活的格式,因為它允許重新對數(shù)據(jù)排序,也允許重載表模式信息,缺省情況下這個格式是壓縮的。-I index只恢復(fù)指定的索引。-l(-list)列出備份中的內(nèi)容,這個操作的輸出可以作為-L選項的輸入。注意,如果過濾選項-n或-t連同-l選項一起使用的話,他們也將限制列出的條目。-L list-file僅恢復(fù)在list-file中列出的條目,恢復(fù)的順序為各個條目在該文件中出現(xiàn)的順序,你也可以手工編輯該文件,并重新排列這些條目的位置,之后再進行恢復(fù)操作,其中以分號(;)開頭的行
36、為注釋行,注釋行不會被導(dǎo)入。-n namespace僅恢復(fù)指定模式(Schema)的數(shù)據(jù)庫對象。該選項可以和-t選項聯(lián)合使用,以恢復(fù)指定的數(shù)據(jù)對象。-O(-no-owner)不輸出設(shè)置對象所有權(quán)的SQL命令。-P function-name(argtype , .) 只恢復(fù)指定的命名函數(shù)。該名稱應(yīng)該和轉(zhuǎn)儲的內(nèi)容列表中的完全一致。-s(-schema-only)只恢復(fù)表結(jié)構(gòu)(數(shù)據(jù)定義)。不恢復(fù)數(shù)據(jù),序列值將重置。-S username指定關(guān)閉觸發(fā)器時需要用到的超級用戶名。它只有在使用-disable-triggers的時候才有關(guān)系。-t table只恢復(fù)指定表的Schema和/或數(shù)據(jù),該選項也可
37、以連同-n選項指定模式。-x(-no-privileges)不恢復(fù)訪問權(quán)限信息(grant/revoke命令)。-1(-single-transaction)在一個單一事物中執(zhí)行恢復(fù)命令。這個選項隱含包括了-exit-on-error選項。-no-tablespaces不輸出設(shè)置表空間的命令,如果帶有這個選項,所有的對象都將恢復(fù)到執(zhí)行pg_restore時的缺省表空間中。-no-data-for-failed-tables缺省情況下,即使創(chuàng)建表失敗了,如該表已經(jīng)存在,數(shù)據(jù)加載的操作也不會停止,這樣的結(jié)果就是很容易導(dǎo)致大量的重復(fù)數(shù)據(jù)被插入到該表中。如果帶有該選項,那么一旦出現(xiàn)針對該表的任何錯誤,
38、對該數(shù)據(jù)表的加載將被忽略。-role=rolename以指定的角色名執(zhí)行restore的操作。通常而言,如果連接角色沒有足夠的權(quán)限用于本次恢復(fù)操作,那么就可以利用該選項在建立連接之后再切換到有足夠權(quán)限的角色。-h(-host=host)指定PostgreSQL服務(wù)器的主機名。-p(-port=port)指定服務(wù)器的偵聽端口,如不指定,則為缺省的5432。-U(-username=username)本次操作的登錄用戶名,如果-O選項沒有指定,此數(shù)據(jù)庫的Owner將為該登錄用戶。-w(-no-password)如果當前登錄用戶沒有密碼,可以指定該選項直接登錄。 2. 應(yīng)用示例: #先通過creat
39、edb命令,以myuser用戶的身份登錄,創(chuàng)建帶恢復(fù)的數(shù)據(jù)newdb / createdb -U myuser newdb #用pg_restore命令的-l選項導(dǎo)出my_dump.dat備份文件中導(dǎo)出數(shù)據(jù)庫對象的明細列表。 / pg_restore -l my_dump.dat db.list / cat db.list 2; 145344 TABLE species postgres 4; 145359 TABLE nt_header postgres 6; 145402 TABLE species_records postgres 8; 145416 TABLE ss_old postg
40、res 10; 145433 TABLE map_resolutions postgres #將以上列表文件中的內(nèi)容修改為以下形式。 #主要的修改是注釋掉編號為2、4和8的三個數(shù)據(jù)庫對象,同時編號10的對象放到該文件的頭部,這樣在基于該列表 #文件導(dǎo)入時,2、4和8等三個對象將不會被導(dǎo)入,在恢復(fù)的過程中將先導(dǎo)入編號為10的對象的數(shù)據(jù),再導(dǎo)入對象6的數(shù)據(jù)。 / cat new_db.list 10; 145433 TABLE map_resolutions postgres ;2; 145344 TABLE species postgres ;4; 145359 TABLE nt_header
41、postgres 6; 145402 TABLE species_records postgres ;8; 145416 TABLE ss_old postgres #恢復(fù)時指定的數(shù)據(jù)庫是newdb,導(dǎo)入哪些數(shù)據(jù)庫對象和導(dǎo)入順序?qū)凑課ew_db.list文件中提示的規(guī)則導(dǎo)入。 / pg_restore -d newdb -L new_db.list my_dump.dat九、psql: PostgreSQL的交互終端,等同于Oracle中的sqlplus。 1. 常用命令行選項列表:選項說明-c command指定psql執(zhí)行一條SQL命令command(用雙引號括起),執(zhí)行后退出。-d
42、dbname待連接的數(shù)據(jù)庫名稱。-E回顯由d和其他反斜杠命令生成的實際查詢。-f filename使用filename文件中的數(shù)據(jù)作為命令輸入源,而不是交互式讀入查詢。在處理完文件后,psql結(jié)束并退出。-h hostname聲明正在運行服務(wù)器的主機名-l列出所有可用的數(shù)據(jù)庫,然后退出。-L filename除了正常的輸出源之外,把所有查詢記錄輸出到文件filename。-o filename將所有查詢重定向輸出到文件filename。-p port指定PostgreSQL服務(wù)器的監(jiān)聽端口。-q -quiet讓psql安靜地執(zhí)行所處理的任務(wù)。缺省時psql將輸出打印歡迎和許多其他信息。-t -
43、tuples-only關(guān)閉打印列名稱和結(jié)果行計數(shù)腳注等信息。-U username以用戶username代替缺省用戶與數(shù)據(jù)庫建立連接。 2. 命令行選項應(yīng)用示例: #-d: 指定連接的數(shù)據(jù)庫。 #-U: 指定連接的用戶。 #-c: 后面的SQL語句是本次操作需要執(zhí)行的命令。 / psql -d posgres -U postgres -c select * from testtable i - 1 2 3 5 (4 rows) #-t: 沒有輸出上面輸出結(jié)果中的字段標題信息和行數(shù)統(tǒng)計信息。 #-q:該選項和-t選項聯(lián)合使用,非常有利于自動化腳本。如: # select copy | table
44、name | to | tablename | .sql from pg_tables #由以上sql語句生成的結(jié)果集,在重定向到輸出文件后,可以作為下一次psql的輸入執(zhí)行。 / psql -t -q -c select * from testtable 1 2 3 5 #-l: 列出當前系統(tǒng)中可用的數(shù)據(jù)庫。 / psql -l List of databases Name | Owner | Encoding | Collation | Ctype | Access privileges -+-+-+-+-+- mydatabase | myuser | UTF8 | zh_CN.UTF-
45、8 | zh_CN.UTF-8 | postgres | postgres | UTF8 | zh_CN.UTF-8 | zh_CN.UTF-8 |. . (4 rows) #-o: 將查詢語句的數(shù)據(jù)結(jié)果輸出到指定文件。 / psql -c select * from testtable -o out / cat out i - 1 2 3 5 (4 rows) 3. 內(nèi)置命令列表: psql內(nèi)置命令的格式為反斜杠后面緊跟一個命令動詞,之后是任意參數(shù)。參數(shù)與命令動詞以及其他參數(shù)之間可以用空白符隔開,如果參數(shù)里面包含空白符,該 參數(shù)必須用單引號括起,如果參數(shù)內(nèi)包含單引號,則需要用反斜杠進行轉(zhuǎn)義,
46、此外單引號內(nèi)的參數(shù)還支持類似C語言printf函數(shù)所支持的轉(zhuǎn)義關(guān)鍵字, 如t、n等。命令說明a如果目前的表輸出格式是不對齊的,切換成對齊的。如果是對齊的,則切換成不對齊。cd directory把當前工作目錄切換到directory。沒有參數(shù)則切換到當前用戶的主目錄。 C title為查詢結(jié)果添加表頭(title),如果沒有參數(shù)則取消當前的表頭。c dbname username 連接新的數(shù)據(jù)庫,同時斷開當前連接。如果dbname參數(shù)為-,表示仍然連接當前數(shù)據(jù)庫。如果忽略username,則表示繼續(xù)使用當前的用戶名。copy 其參數(shù)類似于SQL copy,功能則幾乎等同于SQL copy,一個
47、重要的差別是該內(nèi)置命令可以將表的內(nèi)容導(dǎo)出到本地,或者是從本地導(dǎo)入到數(shù)據(jù)庫指定的表,而SQL copy則是將表中的數(shù)據(jù)導(dǎo)出到服務(wù)器的某個文件,或者是從服務(wù)器的文件導(dǎo)入到數(shù)據(jù)表。由此可見,SQL copy的效率要優(yōu)于該內(nèi)置命令。d pattern顯示和pattern匹配的數(shù)據(jù)庫對象,如表、視圖、索引或者序列。顯示所有列,它們的類型,表空間(如果不是缺省的)和任何特殊屬性。db pattern列出所有可用的表空間。如果聲明了pattern, 那么只顯示那些匹配模式的表空間。db+ pattern和上一個命令相比,還會新增顯示每個表空間的權(quán)限信息。df pattern列出所有可用函數(shù),以及它們的參數(shù)和
48、返回的數(shù)據(jù)類型。如果聲明了pattern,那么只顯示匹配(正則表達式)的函數(shù)。df+ pattern和上一個命令相比,還會新增顯示每個函數(shù)的附加信息,包括語言和描述。distvS pattern這不是一個單獨命令名稱:字母 i、s、t、v、S 分別代表索引(index)、序列(sequence)、表(table)、視圖(view)和系統(tǒng)表(system table)。你可以以任意順序聲明部分或者所有這些字母獲得這些對象的一個列表。 dn pattern列出所有可用模式。如果聲明了pattern,那么只列出匹配模式的模式名。dn+ pattern和上一個命令相比,還會新增顯示每個對象的權(quán)限和注釋。dp pattern生成一列可用的表和它們相關(guān)的權(quán)限。如果聲明了pattern, 那么只列出名字可以匹配模式的表。dT pattern列出所有數(shù)據(jù)類型
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- JJF 2160-2024激光共聚焦顯微鏡校準規(guī)范
- 課件講稿職場教學課件
- 2024年展覽策劃與組織合同
- 2024年度獎學金獎品采購合同
- 2024年度鋼材生產(chǎn)設(shè)備采購合同
- 2024購銷違約合同范本范文
- 2024融資互相擔保合同范本
- 2024年子女撫養(yǎng)權(quán)協(xié)議書范本
- 2024年度標的500萬元廣告發(fā)布合同
- 2024就新能源公交車采購的買賣合同
- 實驗室定期自查制度
- 建設(shè)施工合同書證據(jù)目錄
- 7 中華民族一家親 互相尊重 守望相助 教學設(shè)計-2024-2025學年道德與法治五年級上冊統(tǒng)編版
- 2024年高考歷史真題+模擬題專項版匯編專題03古代中國的思想文化與科技含解析
- 中醫(yī)疫病防治
- 2024九年級英語下冊 Unit 7 Work for PeaceLesson 39 Having Good Relationships in Your Community教學設(shè)計(新版)冀教版
- 《深?!分械纳蕯⑹屡c鏡像闡釋
- 2023年中考英語備考讓步狀語從句練習題(附答案)
- JGJ/T235-2011建筑外墻防水工程技術(shù)規(guī)程
- ISO9001:2015內(nèi)部質(zhì)量審核控制程序
- 柔性生產(chǎn)線設(shè)計
評論
0/150
提交評論