選項(xiàng) | 說明 |
-a(--data-only) | 只輸出數(shù)據(jù),不輸出模式(數(shù)據(jù)對象的定義)。這個(gè)選項(xiàng)只是對純文本格式有意義。對于歸檔格式,你可以在調(diào)用pg_restore時(shí)指定選項(xiàng)。 |
-b(--blobs) | 在dump中包含大對象。 |
-c(--clean) | 在輸出創(chuàng)建數(shù)據(jù)庫對象的SQL命令之前,先輸出刪除該數(shù)據(jù)庫對象的SQL命令。這個(gè)選項(xiàng)只是對純文本格式有意義。對于歸檔格式,你可以在調(diào)用 pg_restore時(shí)指定選項(xiàng)。 |
-C(--create) | 先輸出創(chuàng)建數(shù)據(jù)庫的命令,之后再重新連接新創(chuàng)建的數(shù)據(jù)庫。對于此種格式的腳本,在運(yùn)行之前是和哪個(gè)數(shù)據(jù)庫進(jìn)行連接就不這么重要了。這個(gè)選項(xiàng)只是對純文本格式有意義。對于歸檔格式,你可以在調(diào)用pg_restore時(shí)指定選項(xiàng)。 |
-Eencoding | 以指定的字符集創(chuàng)建該dump文件。 |
-ffile | 輸出到指定文件,如果沒有該選項(xiàng),則輸出到標(biāo)準(zhǔn)輸出。 |
-Fformat |
p(plain): 純文本格式的SQL腳本文件(缺省)。c(custom): 輸出適合于pg_restore的自定義歸檔格式。 這是最靈活的格式,它允許對裝載的數(shù)據(jù)和對象定義進(jìn)行重新排列。這個(gè)格式缺省的時(shí)候是壓縮的。t(tar): 輸出適合于pg_restore的tar歸檔文件。使用這個(gè)歸檔允許在恢復(fù)數(shù)據(jù)庫時(shí)重新排序和/或把數(shù)據(jù)庫對象排除在外。同i時(shí)也可能可以在恢復(fù)的時(shí)候限制對哪些數(shù)據(jù)進(jìn)行恢復(fù)。 |
-n schema | 只轉(zhuǎn)儲(chǔ)schema的內(nèi)容。如果沒有聲明該選項(xiàng),目標(biāo)數(shù)據(jù)庫中的所有非系統(tǒng)模式都會(huì)被轉(zhuǎn)儲(chǔ)。該選項(xiàng)也可以被多次指定,以指定不同pattern的模式。 |
-Nschema | 不轉(zhuǎn)儲(chǔ)匹配schema的內(nèi)容,其他規(guī)則和-n一致。 |
-o(--oids) | 作為數(shù)據(jù)的一部分,為每個(gè)表都輸出對象標(biāo)識(shí)(OID)。 |
-O(--no-owner) | 不輸出設(shè)置對象所有權(quán)的SQL命令。 |
-s(--schema-only) | 只輸出對象定義(模式),不輸出數(shù)據(jù)。 |
-Susername | 指定關(guān)閉觸發(fā)器時(shí)需要用到的超級用戶名。它只有在使用--disable-triggers的時(shí)候才有關(guān)系。 |
-ttable | 只輸出表的數(shù)據(jù)。很可能在不同模式里面有多個(gè)同名表,如果這樣,那么所有匹配的表都將被轉(zhuǎn)儲(chǔ)。通過多次指定該參數(shù),可以一次轉(zhuǎn)儲(chǔ)多張表。這里還可以指定和psql一樣的pattern,以便匹配更多的表。(關(guān)于pattern,基本的使用方式是可以將它視為unix的通配符,即*表示任意字符,?表示任意單個(gè)字符,.(dot)表示schema和object之間的分隔符,如a*.b*,表示以a開頭的schema和以b開頭的數(shù)據(jù)庫對象。如果沒有.(dot),將只是表示數(shù)據(jù)庫對象。這里也可以使用基本的正則表達(dá)式,如[0-9]表示數(shù)字。) |
-Ttable | 排除指定的表,其他規(guī)則和-t選項(xiàng)一致。 |
-x(--no-privileges) | 不導(dǎo)出訪問權(quán)限信息(grant/revoke命令)。 |
-Z0..9 | 聲明在那些支持壓縮的格式中使用的壓縮級別。 (目前只有自定義格式支持壓縮) |
--column-inserts | 導(dǎo)出數(shù)據(jù)用insert into table_name(columns_list) values(values_list)命令表示,這樣的操作相對其它操作而言是比較慢的,但是在特殊情況下,如數(shù)據(jù)表字段的位置有可能發(fā)生變化或有新的字段插入到原有字段列表的中間等。由于columns_list被明確指定,因此在導(dǎo)入時(shí)不會(huì)出現(xiàn)數(shù)據(jù)被導(dǎo)入到錯(cuò)誤字段的問題。 |
--inserts | 導(dǎo)出的數(shù)據(jù)用insert命令表示,而不是copy命令。即便使用insert要比copy慢一些,但是對于今后導(dǎo)入到其他非PostgreSQL的數(shù)據(jù)庫是比較有意義的。 |
--no-tablespaces | 不輸出設(shè)置表空間的命令,如果帶有這個(gè)選項(xiàng),所有的對象都將恢復(fù)到執(zhí)行pg_restore時(shí)的缺省表空間中。 |
--no-unlogged-table-data | 對于不計(jì)入日志(unlogged)的數(shù)據(jù)表,不會(huì)導(dǎo)出它的數(shù)據(jù),至于是否導(dǎo)出其Schema信息,需要依賴其他的選項(xiàng)而定。 |
-h(--host=host) | 指定PostgreSQL服務(wù)器的主機(jī)名。 |
-p(--port=port) | 指定服務(wù)器的偵聽端口,如不指定,則為缺省的5432。 |
-U(--username=username) | 本次操作的登錄用戶名,如果-O選項(xiàng)沒有指定,此數(shù)據(jù)庫的Owner將為該登錄用戶。 |
-w(--no-password) | 如果當(dāng)前登錄用戶沒有密碼,可以指定該選項(xiàng)直接登錄。 |
2. 應(yīng)用示例:
八、pg_restore:
pg_restore用于恢復(fù)pg_dump導(dǎo)出的任何非純文本格式的文件,它將數(shù)據(jù)庫重建成保存它時(shí)的狀態(tài)。對于歸檔格式的文件,pg_restore可以進(jìn)行有選擇的恢復(fù),甚至也可以在恢復(fù)前重新排列數(shù)據(jù)的順序。
pg_restore可以在兩種模式下操作。如果指定數(shù)據(jù)庫,歸檔將直接恢復(fù)到該數(shù)據(jù)庫。否則,必須先手工創(chuàng)建數(shù)據(jù)庫,之后再通過pg_restore恢復(fù)數(shù)據(jù)到該新建的數(shù)據(jù)庫中。該命令的使用方式如下:
選項(xiàng) | 說明 |
filename | 指定要恢復(fù)的備份文件,如果沒有聲明,則使用標(biāo)準(zhǔn)輸入。 |
-a(--data-only) | 只恢復(fù)數(shù)據(jù),而不恢復(fù)表模式(數(shù)據(jù)對象定義)。 |
-c(--clean) | 創(chuàng)建數(shù)據(jù)庫對象前先清理(刪除)它們。 |
-C(--create) | 在恢復(fù)數(shù)據(jù)庫之前先創(chuàng)建它。(在使用該選項(xiàng)時(shí),數(shù)據(jù)庫名需要由-d選項(xiàng)指定,該選項(xiàng)只是執(zhí)行最基本的CREATE DATABASE命令。需要說明的是,歸檔文件中所有的數(shù)據(jù)都將恢復(fù)到歸檔文件里指定的數(shù)據(jù)庫中)。 |
-ddbname | 與數(shù)據(jù)庫dbname建立連接并且直接恢復(fù)數(shù)據(jù)到該數(shù)據(jù)庫中。 |
-e(--exit-on-error) |
如果在向數(shù)據(jù)庫發(fā)送SQL命令的時(shí)候遇到錯(cuò)誤,則退出。缺省是繼續(xù)執(zhí)行并且在恢復(fù)結(jié)束時(shí)顯示一個(gè)錯(cuò)誤計(jì)數(shù)。 |
-Fformat | 指定備份文件的格式。由于pg_restore會(huì)自動(dòng)判斷格式,因此指定格式并不是必須的。如果指定,它可以是以下格式之一:t(tar): 使用該格式允許在恢復(fù)數(shù)據(jù)庫時(shí)重新排序和/或把表模式信息排除出去,同時(shí)還可能在恢復(fù)時(shí)限制裝載的數(shù)據(jù)。 c(custom):該格式是來自pg_dump的自定義格式。這是最靈活的格式,因?yàn)樗试S重新對數(shù)據(jù)排序,也允許重載表模式信息,缺省情況下這個(gè)格式是壓縮的。 |
-I index | 只恢復(fù)指定的索引。 |
-l(--list) | 列出備份中的內(nèi)容,這個(gè)操作的輸出可以作為-L選項(xiàng)的輸入。注意,如果過濾選項(xiàng)-n或-t連同-l選項(xiàng)一起使用的話,他們也將限制列出的條目。 |
-L list-file | 僅恢復(fù)在list-file中列出的條目,恢復(fù)的順序?yàn)楦鱾€(gè)條目在該文件中出現(xiàn)的順序,你也可以手工編輯該文件,并重新排列這些條目的位置,之后再進(jìn)行恢復(fù)操作,其中以分號(;)開頭的行為注釋行,注釋行不會(huì)被導(dǎo)入。 |
-n namespace | 僅恢復(fù)指定模式(Schema)的數(shù)據(jù)庫對象。該選項(xiàng)可以和-t選項(xiàng)聯(lián)合使用,以恢復(fù)指定的數(shù)據(jù)對象。 |
-O(--no-owner) | 不輸出設(shè)置對象所有權(quán)的SQL命令。 |
-Pfunction-name(argtype [, ...]) |
只恢復(fù)指定的命名函數(shù)。該名稱應(yīng)該和轉(zhuǎn)儲(chǔ)的內(nèi)容列表中的完全一致。 |
-s(--schema-only) | 只恢復(fù)表結(jié)構(gòu)(數(shù)據(jù)定義)。不恢復(fù)數(shù)據(jù),序列值將重置。 |
-Susername | 指定關(guān)閉觸發(fā)器時(shí)需要用到的超級用戶名。它只有在使用--disable-triggers的時(shí)候才有關(guān)系。 |
-t table | 只恢復(fù)指定表的Schema和/或數(shù)據(jù),該選項(xiàng)也可以連同-n選項(xiàng)指定模式。 |
-x(--no-privileges) | 不恢復(fù)訪問權(quán)限信息(grant/revoke命令)。 |
-1(--single-transaction) | 在一個(gè)單一事物中執(zhí)行恢復(fù)命令。這個(gè)選項(xiàng)隱含包括了--exit-on-error選項(xiàng)。 |
--no-tablespaces | 不輸出設(shè)置表空間的命令,如果帶有這個(gè)選項(xiàng),所有的對象都將恢復(fù)到執(zhí)行pg_restore時(shí)的缺省表空間中。 |
--no-data-for-failed-tables | 缺省情況下,即使創(chuàng)建表失敗了,如該表已經(jīng)存在,數(shù)據(jù)加載的操作也不會(huì)停止,這樣的結(jié)果就是很容易導(dǎo)致大量的重復(fù)數(shù)據(jù)被插入到該表中。如果帶有該選項(xiàng),那么一旦出現(xiàn)針對該表的任何錯(cuò)誤,對該數(shù)據(jù)表的加載將被忽略。 |
--role=rolename | 以指定的角色名執(zhí)行restore的操作。通常而言,如果連接角色沒有足夠的權(quán)限用于本次恢復(fù)操作,那么就可以利用該選項(xiàng)在建立連接之后再切換到有足夠權(quán)限的角色。 |
-h(--host=host) | 指定PostgreSQL服務(wù)器的主機(jī)名。 |
-p(--port=port) | 指定服務(wù)器的偵聽端口,如不指定,則為缺省的5432。 |
-U(--username=username) | 本次操作的登錄用戶名,如果-O選項(xiàng)沒有指定,此數(shù)據(jù)庫的Owner將為該登錄用戶。 |
-w(--no-password) | 如果當(dāng)前登錄用戶沒有密碼,可以指定該選項(xiàng)直接登錄。 |
2. 應(yīng)用示例:
九、psql:
PostgreSQL的交互終端,等同于Oracle中的sqlplus。
1. 常用命令行選項(xiàng)列表:
選項(xiàng) | 說明 |
-c command | 指定psql執(zhí)行一條SQL命令command(用雙引號括起),執(zhí)行后退出。 |
-d dbname | 待連接的數(shù)據(jù)庫名稱。 |
-E | 回顯由\d和其他反斜杠命令生成的實(shí)際查詢。 |
-f filename | 使用filename文件中的數(shù)據(jù)作為命令輸入源,而不是交互式讀入查詢。在處理完文件后,psql結(jié)束并退出。 |
-h hostname | 聲明正在運(yùn)行服務(wù)器的主機(jī)名 |
-l | 列出所有可用的數(shù)據(jù)庫,然后退出。 |
-L filename | 除了正常的輸出源之外,把所有查詢記錄輸出到文件filename。 |
-o filename | 將所有查詢重定向輸出到文件filename。 |
-p port | 指定PostgreSQL服務(wù)器的監(jiān)聽端口。 |
-q --quiet | 讓psql安靜地執(zhí)行所處理的任務(wù)。缺省時(shí)psql將輸出打印歡迎和許多其他信息。 |
-t --tuples-only | 關(guān)閉打印列名稱和結(jié)果行計(jì)數(shù)腳注等信息。 |
-U username | 以用戶username代替缺省用戶與數(shù)據(jù)庫建立連接。 |
2. 應(yīng)用示例:
3. 內(nèi)置命令列表:
psql內(nèi)置命令的格式為反斜杠后面緊跟一個(gè)命令動(dòng)詞,之后是任意參數(shù)。參數(shù)與命令動(dòng)詞以及其他參數(shù)之間可以用空白符隔開,如果參數(shù)里面包含空白符,該參數(shù)必須用單引號括起,如果參數(shù)內(nèi)包含單引號,則需要用反斜杠進(jìn)行轉(zhuǎn)義,此外單引號內(nèi)的參數(shù)還支持類似C語言printf函數(shù)所支持的轉(zhuǎn)義關(guān)鍵字,如\t、\n等。
命令 | 說明 |
\a | 如果目前的表輸出格式是不對齊的,切換成對齊的。如果是對齊的,則切換成不對齊。 |
\cd [directory] | 把當(dāng)前工作目錄切換到directory。沒有參數(shù)則切換到當(dāng)前用戶的主目錄。 |
\C [title] | 為查詢結(jié)果添加表頭(title),如果沒有參數(shù)則取消當(dāng)前的表頭。 |
\c[dbname[username] ] | 連接新的數(shù)據(jù)庫,同時(shí)斷開當(dāng)前連接。如果dbname參數(shù)為-,表示仍然連接當(dāng)前數(shù)據(jù)庫。如果忽略username,則表示繼續(xù)使用當(dāng)前的用戶名。 |
\copy | 其參數(shù)類似于SQL copy,功能則幾乎等同于SQL copy,一個(gè)重要的差別是該內(nèi)置命令可以將表的內(nèi)容導(dǎo)出到本地,或者是從本地導(dǎo)入到數(shù)據(jù)庫指定的表,而SQL copy則是將表中的數(shù)據(jù)導(dǎo)出到服務(wù)器的某個(gè)文件,或者是從服務(wù)器的文件導(dǎo)入到數(shù)據(jù)表。由此可見,SQL copy的效率要優(yōu)于該內(nèi)置命令。 |
\d [pattern] | 顯示和pattern匹配的數(shù)據(jù)庫對象,如表、視圖、索引或者序列。顯示所有列,它們的類型,表空間(如果不是缺省的)和任何特殊屬性。 |
\db [pattern] | 列出所有可用的表空間。如果聲明了pattern, 那么只顯示那些匹配模式的表空間。 |
\db+ [pattern] | 和上一個(gè)命令相比,還會(huì)新增顯示每個(gè)表空間的權(quán)限信息。 |
\df [pattern] | 列出所有可用函數(shù),以及它們的參數(shù)和返回的數(shù)據(jù)類型。如果聲明了pattern,那么只顯示匹配(正則表達(dá)式)的函數(shù)。 |
\df+ [pattern] | 和上一個(gè)命令相比,還會(huì)新增顯示每個(gè)函數(shù)的附加信息,包括語言和描述。 |
\distvS [pattern] | 這不是一個(gè)單獨(dú)命令名稱:字母 i、s、t、v、S 分別代表索引(index)、序列(sequence)、表(table)、視圖(view)和系統(tǒng)表(system table)。你可以以任意順序聲明部分或者所有這些字母獲得這些對象的一個(gè)列表。 |
\dn [pattern] | 列出所有可用模式。如果聲明了pattern,那么只列出匹配模式的模式名。 |
\dn+ [pattern] | 和上一個(gè)命令相比,還會(huì)新增顯示每個(gè)對象的權(quán)限和注釋。 |
\dp [pattern] | 生成一列可用的表和它們相關(guān)的權(quán)限。如果聲明了pattern, 那么只列出名字可以匹配模式的表。 |
\dT [pattern] | 列出所有數(shù)據(jù)類型或只顯示那些匹配pattern的。 |
\du [pattern] | 列出所有已配置用戶或者只列出那些匹配pattern的用戶。 |
\echotext [ ... ] | 向標(biāo)準(zhǔn)輸出打印參數(shù),用一個(gè)空格分隔并且最后跟著一個(gè)新行。如:\echo `date` |
\g[{filename ||command}] | 把當(dāng)前的查詢結(jié)果緩沖區(qū)的內(nèi)容發(fā)送給服務(wù)器并且把查詢的輸出存儲(chǔ)到可選的filename或者把輸出定向到一個(gè)獨(dú)立的在執(zhí)行 command的Unix shell。 |
\ifilename | 從文件filename中讀取并把其內(nèi)容當(dāng)作從鍵盤輸入的那樣執(zhí)行查詢。 |
\l | 列出服務(wù)器上所有數(shù)據(jù)庫的名字和它們的所有者以及字符集編碼。 |
\o[{filename ||command}] | 把后面的查詢結(jié)果保存到文件filename里或者把后面的查詢結(jié)果定向到一個(gè)獨(dú)立的shell command。 |
\p | 打印當(dāng)前查詢緩沖區(qū)到標(biāo)準(zhǔn)輸出。 |
\q | 退出psql程序。 |
\r | 重置(清空)查詢緩沖區(qū)。 |
\s [filename] | 將命令行歷史打印出或是存放到filename。如果省略filename,歷史將輸出到標(biāo)準(zhǔn)輸出。 |
\t | 切換是否輸出列/字段名的信息頭和行記數(shù)腳注。 |
\w{filename ||command} | 將當(dāng)前查詢緩沖區(qū)輸出到文件filename或者定向到Unix命令command。 |
\z [pattern] | 生成一個(gè)帶有訪問權(quán)限列表的數(shù)據(jù)庫中所有表,視圖和序列的列表。如果給出任何pattern,則被當(dāng)成一個(gè)規(guī)則表達(dá)式,只顯示匹配的表,視圖和序列。 |
\!! [command] | 返回到一個(gè)獨(dú)立的Unix shell或者執(zhí)行Unix命令command。參數(shù)不會(huì)被進(jìn)一步解釋,shell將看到全部參數(shù)。 |
4. 內(nèi)置命令應(yīng)用示例:
在psql中,大部分的內(nèi)置命令都比較易于理解,因此這里只是給出幾個(gè)我個(gè)人認(rèn)為相對容易混淆的命令。
標(biāo)簽:珠海 衡陽 錦州 株洲 蚌埠 晉城 來賓 烏海
巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《PostgreSQL教程(十八):客戶端命令(2)》,本文關(guān)鍵詞 PostgreSQL,教程,十八,客戶端,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。