您好,登錄后才能下訂單哦!
psql功能強大,技巧怎么用只能后續慢慢補充了,看一個工具先看怎么用help,下面是一些常用的東西,比如如何查看目錄、怎么使用變量、非常實用
$ psql #連接到數據庫服務器,可以在其中輸入相應的SQL語句或者psql的命令,psql的命令都以\開始,
公司使用的是postgres的數據庫,很多命令不是很熟悉,總是需要網上查資料。所以整理下來一個全面的手冊記錄下來。
psql
Name
psql -- PostgreSQL 交互終端
Synopsis
psql [option...] [dbname [username]]
描述
psql 是一個以終端為基礎的 PostgreSQL 前端。它允許你交互地鍵入查詢,把它們發出給 PostgreSQL, 然后看看查詢的結果。另外,輸入可以來自一個文件。還有, 它提供了一些元命令和多種類 shell 地特性來實現書寫腳本以及對大量任務的自動化。
選項
-a
--echo-all
在讀取行時向標準輸出打印所有內容。 這個選項在腳本處理時比交互模式時更有用。這個選項等效于設置變量 ECHO 為 all。
-A
--no-align
切換為非對齊輸出模式。(缺省輸出模式是對齊的。)
-c command
--command command
聲明 psql 將執行一條查詢字串, command,然后退出。這一點在 shell 腳本里很有用。
command 必須是一條完全可以被服務器分析的查詢字串(也就是說,它不包含 psql特有的特性), 或者是一個反斜杠命令。這樣你就不會混合 SQL 和 psql 元命令。要想混合使用,你可以把字串定向到 psql里,象這樣: echo "\x \\ select * from foo;" | psql。
如果命令字串包含多個 SQL 命令,那么他們在一個事務里處理, 除非在字串里包含了明確的 BEGIN/COMMIT 命令把他們分成多個事務。 這個和從 psql 的標準輸入里給它填充相同字串不同。
-d dbname
--dbname dbname
聲明想要聯接的數據庫名稱。等效于在命令行行上把 dbname 聲明為第一個非選項參數。
-e
--echo-queries
把所有發送給服務器的查詢同時也拷貝到標準輸出。 等效于把變量 ECHO 設置為 queries。
-E
--echo-hidden
回顯由\d和其他反斜杠命令生成的實際查詢。 你可以使用這個命令學習 psql 的內部操作。 這等效于在psql里設置變量ECHO_HIDDEN。
-f filename
--file filename
使用 filename作為命令的語句源而不是交互式讀入查詢。 在處理完文件后,psql 結束。這個選項在很多方面等效于內部命令 \i。
如果 filename 是 -(連字符),則從標準輸入讀取。
使用這個選項與用 psql < filename 有微小的區別。通常,兩者都回按照你預期那樣運行,但是使用 -f打開了一些很好的特性, 比如帶行號的錯誤信息。而且,使用這個選項還有可能有減小啟動負荷的機會。 另一方面,如果你把所有內容手工輸入, 使用 shell 輸入定向的方式(理論上)能保證生成和你已經得到的完全一樣的輸出(譯注:重復運行命令)。
-F separator
--field-separator separator
使用 separator 作為未對齊輸出的域分隔符。等效于 \pset fieldsep 或 \f。
-h hostname
--host hostname
聲明正在運行服務器的主機名。 如果主機名以斜杠開頭,則它被用做到 Unix 域套接字的路徑。
-H
--html
打開HTML格式輸出。等效于 \pset format html或 \H 命令。
-l
--list
列出所有可用的數據庫,然后退出。其他非聯接選項將被忽略。類似于內部命令 \list。
-L filename
--log filename
除了正常的輸出源之外,把所有查詢輸出記錄到文件 filename。
-o filename
--output filename
將所有查詢輸出定向到文件 filename。這個選項等效于命令 \o。
-p port
--port port
聲明被服務器偵聽的 TCP 端口或使用的缺省本地 Unix 主控套接字文件句柄。 缺省的是環境變量PGPORT的值,如果沒有設置的話是編譯是聲明的端口,通常是 5432。
-P assignment
--pset assignment
允許你在命令行上以 \pset的風格設置打印選項。 要注意的是你在這里用等號分割名稱和值,而不能用空格。 因此要把輸出格式設置為 LaTeX,你可以敲入 -P format=latex。
-q
--quiet
聲明 psql 將安靜地執行處理任務。 缺省時psql將打印歡迎和許多其他輸出信息。 如果使用了此選項,這些都不出現。這在和 -c 選項一起使用時很有效。在 psql 里,你可以通過設置 QUIET 變量實現同樣效果。
-R separator
--record-separator separator
使用 separator 做為非對齊輸出的記錄分隔符。 等效于\pset recordsep命令。
-s
--single-step
進入單步模式運行。意味著每個查詢在發往服務器之前都要提示用戶, 用這個選項也可以取消執行。此選項主要用于調試腳本。
-S
--single-line
進入單行運行模式,這時每個命令都將由換行符結束,象分號那樣。
注意: 注意這個模式是給那些堅持要這個特性的人的,我們不鼓勵你這么用。 實際上,如果你在一行里混合使用 SQL 和元命令,執行的順序對不熟練的用戶而言不總是清晰的。
-t
--tuples-only
關閉打印列名稱和結果行計數腳注等信息。等效于 \t 命令。
-T table_options
--table-attr table_options
允許你聲明放在 HTML table 標記里的選項。 參閱 \pset 獲取細節。
-u
強制 psql 在和數據庫聯接之提示輸入用戶的用戶名和口令。
這個選項已經廢棄了,因為它在概念上有漏洞。 (提示輸入非缺省用戶名和提示輸入服務器要求的口令是完全兩碼事。)我們鼓勵你用 -U 和 -W 選項取代。
-U username
--username username
以用戶 username 代替缺省用戶與數據庫聯接。(當然,你必須有這么做的權限。)
-v assignment
--set assignment
--variable assignment
進行一次變量分配,象內部命令 \set 那樣。 注意,如果有變量名和值的話,你必須在命令行上用等號分隔它們。要重置一個變量, 去掉等號。這個分配是在啟動的很早的階段進行的,所以為內部使用保留的變量可能被再次覆蓋。
-V
--version
打印 psql 版本然后退出。
-W
--password
強制 psql 在與一個數據庫聯接前提示輸入口令。
如果服務器要求口令認證,psql 自動提出一個口令提示符。不過,目前是否需要輸入口令的判斷并不完全可靠, 因此用這個選項強制一個提示符。 如果沒有發出口令提示符而服務器要求口令認證,那么聯接企圖將失敗。
這個選項將在整個會話過程中有效,即使你用元命令 \connect 改變了所聯接的數據庫。
-x
--expanded
打開擴展表格式模式。等效于命令 \x。
-X,
--no-psqlrc
不讀取啟動文件(系統的 psqlrc 或者你的 ~/.psqlrc 都不讀取)。
-?
--help
顯示關于psql命令行參數的幫助然后退出。
退出狀態
如果正常結束,那么 psql 向 shell 返回 0, 如果自身發生致命錯誤,則返回 1(內存用盡,未找到文件等), 如果和數據庫的連接失效而且會話不再活躍則返回 2, 如果腳本中發生錯誤并且設置了 ON_ERROR_STOP 則返回 3。
用法
與一個數據庫聯接
psql 是一個普通的 PostgreSQL 客戶端應用。為了與一個數據庫聯接,你需要知道你的目標數據庫, 服務器的主機名和端口號以及你希望以哪個用戶的身份進行聯接等信息。 我們可以通過命令行參數告訴 psql 這些信息,分別是 -d, -h,-p,和 -U。 如果有個參數不屬于任何選項開關, 那么它會被解釋成數據庫名(或者是用戶名——如果數據庫名稱已經給出了。)。 不是所有這些選項都是必須的,有缺省存在。 如果你省略主機名, psql 將通過 Unix 域套接字與本地主機的服務器相聯, 或者在沒有 unix 域套接字的機器上,通過 TCP/IP 與 localhost 連接。 缺省的端口號是編譯時確定的。因為數據庫服務器使用同樣的缺省值, 所以在大多數設置下,你可能不需要聲明端口號。缺省的用戶名是你的 Unix 用戶名,與數據庫同名。 要注意的是你不能用任意用戶名與任何數據庫相聯。你的數據庫管理員應該告訴你你的訪問權限。
如果缺省不太正確,那么你可以通過設置幾個環境變量 PGDATABASE, PGHOST,PGPORT 和/或 PGUSER 為對應的值的方法節約幾次敲擊。 (其它的環境變量的信息,參閱 Section 28.11。) 另外,用一個 ~/.pgpass 文件來避免輸入密碼也是很方便的。 參閱 Section 28.12 獲取更多信息。
如果因為任何原因而無法與數據庫相聯(例如,權限不夠,服務器沒有運行等), psql 將返回一個錯誤并退出。
輸入 SQL 命令
通常狀況下,psql 提供一個帶有 psql 正在與之聯接的接數據庫名的,后綴 =>的提示符。例如,
$ psql testdb
Welcome to psql 8.1, the PostgreSQL interactive terminal.
Type: \copyright for distribution terms
\h for help with SQL commands
\? for help with psql commands
\g or terminate with semicolon to execute query
\q to quit
testdb=>
用戶可以在這個提示符下鍵入SQL 查詢。 通常,輸入的行將在命令終止分號出現時送到服務器。 一行的終止并不結束命令!因此命令可以因清晰起見跨越好幾行。如果命令發送出去而且執行沒有錯誤, 命令結果會顯示在屏幕上。
當命令正在進行時,psql 同樣還輪詢由 LISTEN 和 NOTIFY. 生成的異步通知信號。
元命令
你在 psql 里輸入的任何以不帶引號的反斜杠('\')開頭的東西都是 psql 元命令,這些命令是由 psql 自己處理的。這些命令也是令 psql 更可用于管理或書寫腳本的原因。 元命令更常見的叫法是斜杠或反斜杠命令。
一個 psql 命令的格式是反斜杠后面緊跟一個命令動詞,然后是任意參數。 參數與命令動詞和其他參數以任意個空白字符間隔。
要在參數里面包含空白,你必須用單引號把它包圍起來。 要在這樣的參數里包含單引號,前面加一個反斜杠。 任何包含在單引號里的東西會被進一步進行類 C 的替換,把 \n (新行),\t (tab),\digits(八進制), \0xdigits(十六進制)。
如果一個不帶引號的參數以冒號(:)開頭, 它會被當作一個psql 變量,并且該變量的值會最終成為真正的參數值。 (譯注:類似 ecpg 和 pl/pgsql 的變量用法。)
用“反勾號” ("backticks" `) 包圍的內容被當作一個命令行傳入 shell。 該命令的輸出(刪除了結尾的新行)被當作參數值。上面描述的逃逸(字符)序列在反勾號里也生效。
有些命令以一個 SQL 標識的名稱(如,一個表名)為參數。 這些參數遵循 SQL 語法關于雙引號的規則: 不帶雙引號的標識強制成小寫, 而雙引號保護字母不受大小寫轉換,并且允許在標識符中使用空白。 在雙引號中,成對的雙引號在結果名字中分析成一個雙引號。比如, FOO"BAR"BAZ 解析成 fooBARbaz,而 "A weird"" name" 變成 A weird" name。
對參數的分析在碰到另一個不帶引號的反斜杠時停止。 這里會認為是一個新的元命令的開始。特殊序列 \(雙反斜杠)標識參數的結尾并將繼續分析后面的 SQL 命令(如果存在的話)。這樣 SQL 和 psql命令可以自由的在一行里面混合。 但是在任何情況下,一條元命令的參數不能延續超過行尾。
下列元命令是已定義的:
\a
如果目前的表輸出格式是不對齊的,切換成對齊的。 如果是對齊的,切換成不對齊。這條命令是為了向后兼容。參閱 \pset 獲取一個更通用的解決方法。
\cd [ directory ]
把當前工作目錄改變到 directory。 沒有參數是則改變到當前用戶的家目錄。
提示: 要打印出你的當前工作目錄,使用 \!pwd。
\C [ title ]
把正在打印的表的標題設置為一個查詢的結果或者取消這樣的設置。 這條命令等效于 \pset title title. (這條命令的名稱源于 "caption",因為以前只是用于在一個 HTML 表里面設置標題。)
\connect (或者 \c)[ dbname [ username ] ]
與一個新的數據庫建立一個聯接,使用/不用一個用戶名。 前面的聯接將關閉。如果 dbname 是 -,那么就假設是當前數據庫名稱。
如果省略 username,則假設是當前用戶名。
作為一條特殊規則,不帶任何參數運行\connect 將以缺省用戶身份與缺省數據庫連接(正如你不帶任何參數運行 psql 一樣。)
如果聯接失敗(用戶名錯,訪問拒絕等),那么將保留前面的聯接--當且僅當在 psql 處于交互模式下如此。 如果運行的是非交互的腳本,處理會馬上停止,并返回一個錯誤。 選擇這樣的區別是一方面為用戶使用方便考慮,另一方面為保證腳本不會碰巧操作了錯誤的數據庫的安全機制考慮的。
\copy table [ ( column_list ) ] { from | to } { filename | stdin | stdout | pstdin | pstdout } [ with ] [ oids ] [ delimiter [ as ] 'character' ] [ null [ as ] 'string' ] [ csv [ quote [ as ] 'character' ] [ escape [ as ] 'character' ] [ force quote column_list ] [ force not null column_list ] ]
執行前端(客戶端)拷貝。這是一個運行 SQL COPY 命令的操作, 不同的是 SQL COPY 是服務器在讀寫指明的文件,而 psql 讀寫文件并作為本地的文件系統和服務器之間的路由取出或寫入數據。 這意味著文件訪問性和權限都是本地用戶的,而不是服務器的,因此不需要 SQL 超級用戶權限。
這條命令的語法是模擬 SQL COPY 命令的。 要注意的是由此而來,有一些特殊的分析規則應用于 \copy 命令。 尤其是變量替換規則和反斜杠代換規則不起作用。
\copy table from stdin | stdout 分別基于命令輸入和輸出讀/寫。所有行都從發出命令的同一個源讀取,直到讀到了 \. 或者流達到 EOF。 輸出發送到和命令輸出相同的位置。要從 psql 的標準輸入或者輸出讀/寫, 使用 pstdin 或者pstdout。這個選項用于把和 SQL 腳本嵌在一起的文件填充表很有用。
提示: 此操作不象 SQL COPY 命令這樣高效, 因為所有數據必須通過客戶端/服務器聯接。對于大數據量的操作,另一種方法更可行。
\copyright
顯示 PostgreSQL 的版權和版本信息。
\d [ pattern ]
\d+ [ pattern ]
對于每個匹配pattern的關系(表,視圖,索引或者序列), 顯示所有列,它們的類型,表空間(如果不是缺省的)和任何特殊屬性,象NOT NULL或缺省等--只要存在。 如果實際上這個關系是一個表,任何已定義的索引,主鍵,唯一約束相關的索引,規則,約束,和觸發器也同樣顯示出來, 如果關系是一個視圖,還顯示視圖的定義。 ("匹配模式"在下面定義。)
從 \d+ 來的命令也是一樣的,只不過顯示更多信息:任何與表的列關聯的注解也都會顯示, 還有就是表中出現的 OID。
注意: 如果如果不帶任何pattern調用 \d, 等效于 \dtvs,將顯示一個所有表,視圖和序列的列表。 這完全是出于方便的考慮。
\da [ pattern ]
列出所有可用聚集函數,以及它們操作的數據類型。如果聲明了 pattern,那么只顯示匹配(正則表達式)的聚集函數。
\db [ pattern ]
\db+ [ pattern ]
列出所有可用的表空間。如果聲明了 pattern, 那么只顯示那些匹配模式的表空間。如果在命令名上附加了 +,那么每個對象都和與之相關的權限一起列出。
\dc [ pattern ]
列出所有字符集之間的可用轉換。如果聲明了 pattern, 則只列出那些匹配模式的轉換。
\dC
列出所有類型轉換。
\dd [ pattern ]
顯示所有匹配 pattern 的描述,如果沒有給出參數,顯示所有可視對象。 但是不管怎樣,只有那些有描述內容的對象才顯示出來。 ("對象"包括聚集,函數,操作符,類型, 關系(表,視圖,索引,序列,大對象),規則和觸發器。)例如:
=> \dd version
Object descriptions
Schema | Name | Object | Description
------------+---------+----------+---------------------------
pg_catalog | version | function | PostgreSQL version string
(1 row)
可以用 COMMENT SQL 命令生成對對象的描述。
\dD [ pattern ]
列出所有可用域。如果聲明了 pattern,那么只顯示匹配的域。
\df [ pattern ]
\df+ [ pattern ]
列出所有可用函數,以及它們的參數和返回的數據類型。如果聲明了 pattern,那么只顯示匹配(正則表達式)的函數。如果使用了 \df+ 的形式,每個函數的附加信息,包括語言和描述也會顯示出來。
注意: 要查找接受或者返回特定類型的函數,使用你的分頁器的搜索功能來滾動 \df 的輸出。
為了減少混亂,\df 并不顯示數據類型的 I/O 函數。 這樣是通過忽略那些接受或者返回類型 cstring 的函數實現的。
\dg [ pattern ]
列出所有數據庫組。如果聲明了 pattern, 只顯示那些匹配模式的名字。
\distvS [ pattern ]
這不是實際的命令名稱:字母 i,s, t,v,S 分別代表索引(index), 序列(sequence),表(table),視圖(view)和系統表(system table)。 你可以以任意順序聲明任意或者所有這些字母獲得這些對象的一個列表。 字幕 S 把列表限制于系統對象;如果沒有 S,則只顯示非系統對象。 如果在命令名上附加了 +,那么還會列出和每個對象相關聯的描述,如果有的話。
如果聲明了 pattern,那么只列出匹配模式的對象。
\dl
這是 \lo_list的別名,顯示一個大對象的列表。
\dn [ pattern ]
\dn+ [ pattern ]
列出所有可用模式(名字空間)。如果聲明了 pattern (一個正則表達式),那么只列出匹配模式的模式名。不顯示非本地的臨時模式。 如果在命令名上附加了 +,那么每個對象都和與之相關的權限和注釋一起列出(如果有的話)。
\do [ pattern ]
列出所有可用操作符,以及它們的操作數和返回的數據類型。 如果聲明了 pattern,那么只顯示匹配模式的操作符。
\dp [ pattern ]
生成一列可用的表和它們相關的權限。 如果聲明了 pattern, 那么只列出名字可以匹配模式的表。
命令 GRANT 和 REVOKE 用于設置訪問權限。 參閱 GRANT 獲取更多信息。
\dT [ pattern ]
\dT+ [ pattern ]
列出所有數據類型或只顯示那些匹配 pattern的。這條命令的 \dT+ 形式顯示更多信息。
\du [ pattern ]
列出所有已配置用戶或者只列出那些匹配 pattern 的用戶。
\edit (or \e) [ filename ]
如果聲明了 filename, 則編輯此文件并且在編輯器退出后將其內容拷貝回查詢緩沖區。 如果沒有給出參數,則把當前查詢緩沖區內容拷貝到一個臨時文件然后以相同方式編輯。
然后根據一般的psql規則重新分析查詢緩沖區, 這時整個緩沖區當作一個單行。(因此你無法用這個方法制作“腳本”,用 \i 做腳本。) 這還意味著如果該查詢以分號結尾(或者包含分號),它就會馬上被執行。否則它只是在查詢緩沖區里等待。
提示: psql 搜索環境變量 PSQL_EDITOR,EDITOR 和 VISUAL(以此順序)查找要用到哪個編輯器。如果上面的都沒有設置,那么在 Unix 系統上使用 vi,在 Windows 系統上用 notepad.exe。
\echo text [ ... ]
向標準輸出打印參數,用一個空格分隔并且最后跟著一個新行。 這個特性在顯示腳本的輸出時會有用。例如:
=> \echo date
Tue Oct 26 21:40:57 CEST 1999
果第一個參數是一個無引號的 -n,那么不會寫出結尾的新行。
提示: 如果你使用 \o 命令重定向你的查詢的輸出,你可能會用 \qecho取代這條命令。
\encoding [ encoding ]
設置客戶端字符編碼方式。不帶參數時,這條命令顯示當前的編碼方式。
\f [ string ]
為不對齊的查詢輸出設置域分隔符。缺省時是豎條(|)。 參閱 \pset 獲取設置輸出選項的通用方法。
\g [ { filename | |command } ]
把當前的查詢輸入緩沖區的內容發送給服務器并且把查詢的輸出存儲到可選的 filename 或者把輸出定向到一個獨立的在執行 command 的 Unix shell。 單獨一個 \g 實際上等效于一個分號。一個帶有參數的\g 是"一次性"的 \o命令的代用品。
\help (或者 \h) [ command ]
給出指定 SQL 命令的語法幫助。如果沒有給出 command ,那么 psql 將列出可獲得語法幫助的所有命令。如果 command 是一個星號("*"),則顯示所有 SQL 命令的語法幫助。
注意: 為簡化敲擊,包含多個單字的命令不需要引起。因此鍵入 \help alter table 是正確的。
\H
打開 HTML 查詢輸出格式。如果 HTML 格式已經打開,則切換回缺省的對齊的文本格式。 這個命令是為了兼容和方便,參閱 \pset 獲取設置其他輸出選項的內容。
\i filename
從文件filename中讀取并把其內容當作從鍵盤輸入的那樣執行查詢。
注意: 如果你想在屏幕上看到讀入的行,你必須對所有行設置變量 ECHO 為 all。
\l (或 \list)
\l+ (或 \list+)
列出服務器上所有數據庫的名字和它們的所有者以及字符集編碼。在命令名稱后面加一個 "+" 還可以看到對數據庫的描述。
\lo_export loid filename
從數據庫里讀取 OID 為 loid 的大對象并把她寫到 filename里。 注意這個功能與服務器函數 lo_export 有些微小的區別, lo_export 運行時帶著運行數據庫服務器的用戶權限, 而且是在服務器的文件系統上。
提示: 使用 \lo_list 查看大對象的 OID。
\lo_import filename [ comment ]
把文件存儲為一個 PostgreSQL 大對象。可以帶著一個該對象的注解選項。例如:
foo=> \lo_import '/home/peter/pictures/photo.xcf' 'a picture of me'
lo_import 152801
響應表明此大對象得到一個對象標識 152801,如果你還想訪問該對象,就應該把這個對象標識記住。 因此,我們建議總是給每個對象關聯一個人類可讀的注解。 那樣就可以用 \lo_list 命令看到這些注解。
注意這條命令與服務器端的 lo_import 有一些區別, 因為這條命令是本地用戶在本地文件系統上操作, 而不是以服務器用戶在服務器文件系統上操作。
\lo_list
顯示一個目前存儲在該數據庫里的所有 PostgreSQL 大對象和它們的所有者的列表。
\lo_unlink loid
從數據庫里刪除OID為 loid 的大對象。
提示: 使用 \lo_list 查找大對象的 OID。
\o [ {filename | |command} ]
把后面的查詢結果保存到文件 filename 里或者把后面的查詢結果定向到一個獨立的 Unix shell 執行 command。 如果沒有聲明參數,查詢輸出重置為標準輸出。
"查詢結果"包括所有表,命令響應和從數據庫服務器來的提示, 同樣還有各種各樣查詢數據庫的反斜杠命令的輸出(如 \d),但是沒有錯誤信息。
提示: 要用文本分散查詢結果之間的輸出,用 \qecho。
\p
打印當前查詢緩沖區到標準輸出。
\pset parameter [ value ]
這條命令設置影響查詢結果表輸出的選項。parameter 描述要設置的選項是哪一個。value 的語意也取決于它。
可調節的打印選項有:
format
設置輸出格式為 unaligned,aligned,html, latex 或 troff-ms 之一。允許使用唯一的縮寫。 (這也意味著一個字母就夠了。)
"Unaligned" (不對齊)把一條記錄的所有字段都輸出到一行, 用當前有效的域分隔符分隔。這主要用于生成那些要被其他程序讀取的輸出(tab分隔,逗號分隔)。 "Aligned" (對齊)模式是標準的,人類可讀的,格式化好了的文本輸出,也是缺省。 "HTML" 和 "LaTeX" 模式把表輸出為可用于文檔里的對應標記語言。它們還不是完整的文檔! (可能對于 HTML 變化還不是太大, 但是在 LaTeX 里,你必須有一個完整的文檔包裝器。)
border
第二個參數必須是一個數字。通常,數字越大,表就有越寬的邊界和越多的線, 但是這個參數取決于實際的格式。在HTML模式里, 這個參數會直接翻譯成border=...屬性,在其他的模式里, 只有值 0 (無邊界),1 (內部分隔線)和 2 (表框架)有意義。
expanded )(或者 x)
在正常和擴展格式之間切換。當打開擴展格式時,查詢結果用兩列顯示, 字段名稱在左,數據在右。這個選項只影響正常查詢結果的顯示方式; psql 元命令的輸出總是使用正常的格式。 這個模式在數據無法放進通常的"水平"模式的屏幕時很有用。
所有四種輸出模式都支持擴展格式。
null
第二個參數是一個字串,用以代表字段的值為 null 時的打印輸出。 缺省是什么都不打,這樣很容易和類似一個空字串混淆。 因此,我們可能選擇 \pset null '(null)'。
fieldsep
聲明在非對齊模式時的域分隔符。 這樣我們就可以創建其他程序希望的tab或逗號分隔的輸出。要設置 tab 域分隔符, 鍵入 \pset fieldsep '\t'。缺省域分隔符是 '|' (一個豎條符號)。
footer
切換缺省腳注 (x rows)。
recordsep
聲明在非對齊模式時的記錄分隔符。缺省是換行符。
tuples_only (或者 t)
在完全顯示和只顯示記錄之間切換。 完全顯示將顯示象列頭,標題和各種腳注等信息。 在這個模式下,只顯示記錄模式將只顯示實際的表數據。
title [ text ]
為任何隨后打印的表設置標題。 這個參數可以用于給你的輸出一個描述性標記。 如果不帶參數,重置標題。
tableattr (或者 T)[ text ]
允許你聲明放在 HTML table 標記里的任何屬性。例如,可以是 cellpadding 或 bgcolor。注意你可能不需要在這里聲明 border ,因為已經在 \pset border 里用過了。
pager
控制查詢和psql幫助輸出的分頁器。如果設置了環境變量 PAGER, 輸出被定向到指定程序,否則使用系統缺省(比如 more)。
如果關閉了分頁器,則不使用它,如果打開了,程序只在需要的時候使用分頁器,也就是說, 輸出是到終端,而且那個表很可能無法與屏幕匹配。 (psql 在決定何時分頁時不是很完美。) \pset pager 開關分頁器。我們也可以把分頁器設置為 always,導致我們在任何情況下都使用分頁器。
可以在 例子 節看到這些不同格式輸出的示例。
提示: 有很多用于\pset的快速命令。參閱 \a,\C,\H, \t,\T,和 \x。
注意: 無參數運行 \pset是錯誤的。 以后這樣調用將顯示當前打印選項狀態。
\q
退出psql程序。
\qecho text [ ... ]
這條命令等效于 \echo ,區別是所有輸出將寫入由 \o設置的輸出通道。
\r
重置(清空)查詢緩沖區。
\s [ filename ]
將命令行歷史打印出或是存放到 filename。 如果省略 filename, 歷史將輸出到標準輸出。這個選項只有在 psql 配置成使用 GNU Readline 庫后才生效。
注意: 在當前版本里,這個( GNU 歷史庫)不再是必須的了, 實際上,在程序結束時自動保存命令行歷史。每次 psql 啟動都會裝載命令行歷史。
\set [ name [ value [ ... ] ] ]
設置內部變量 name 為 value 或著如果給出了多于一個值, 設置為所有這些值的聯接結果。如果沒有給出第二個參數,只設變量不設值。要重置一個變量,使用 \unset 命令。
有效的變量名可以包含字符,數字和下劃線。 參閱下面的 變量 獲取細節。
盡管你可以設置任何變量為任意值, psql對一些變量特殊對待。它們在關于變量的節里面有文檔。
注意: 這條命令是完全和 SQL 命令 SET 不一樣的。
\t
切換輸出的列/字段名的信息頭和行記數腳注。 這條命令等效于 \pset tuples_only,提供主要為了方便。
\T table_options
允許你在使用HTML輸出模式時聲明放在 table 標記里的屬性。 這條命令等效于 \pset tableattr table_options。
\w {filename | |command}
將當前查詢緩沖區輸出到文件 filename 或者定向到 Unix 命令 command。
\x
切換擴展行格式。等效于 \pset expanded。
\z [ pattern ]
生成一個帶有訪問權限列表的數據庫中所有表,視圖和序列的列表。 如果給出任何pattern,則被當成一個規則表達式, 只顯示匹配的表,視圖和序列。
命令 GRANT 和 REVOKE 用于設置訪問權限。 參閱 GRANT 獲取更多信息。
這是 \dp("顯示權限")的別名。
! [ command ]
返回到一個獨立的 Unix shell 或者執行 Unix 命令 command。 參數不會被進一步解釋,shell 將看到全部參數。
\?
獲得關于反斜杠命令的幫助信息。
各種 \d 命令都接受一個 pattern 參數,聲明要顯示的對象名字。* 表示"任何字符序列", 而 ? 表示"任何單個字符"。(這個表示法和 Unix 的 shell 文件名模式兼容。) 高級用戶也可以使用正則表達式表示法,比如字符表,[0-9] 這樣的東西來匹配"任意數字"。 要讓任何這些模式匹配字符可以安字面方式解析,那就應該用雙引號包圍它們。
一個包含(無引號的)句點的模式會被解析承一個模式名的模式后面跟著一個對象名的模式。 比如, \dt foo.bar 顯示所有以foo 開頭的模式里的以 bar 開頭的表名字。 如果沒有出現句點,那么這個模式只匹配在當前模式搜索路徑中可見的對象。
如果完全省略 pattern 參數, 那么 \d 命令顯示所有在當前模式搜索路徑中可見的對象。 要查閱在數據庫中的所有對象,使用模式 .。
高級特性
變量
psql 提供類似通常 Unix 命令 shell 那樣的變量替換特性。 變量只是簡單的名稱/數值對, 這里的值可以是任何長度的任何值。要設置一個變量,使用 psql 元命令 \set:
testdb=> \set foo bar
把變量"foo" 設置為值 "bar"。 要檢索變量的內容,在變量名前面放上冒號然后把它用在任意斜杠命令里:
testdb=> \echo :foo
bar
注意: \set 的參數服從和其他命令一樣的替換規則。 因此你可以構造有趣的引用,象 \set :foo 'something' 這樣, 獲得分別象Perl或 PHP那樣有名的"軟連接(soft links)"或"變量 變量"。 不幸的是(或者 萬幸的?),用這些構造不能做任何有用的事情。另一方面, \set bar :foo 是一個非常有效的拷貝變量的方法。
如果你不帶第二個參數調用\set, 那么只是設置這個變量而沒有值。 要重置(或刪除)一個變量,使用命令 \unset。
psql的內部變量可以包括任意順序, 任意數量的字母,數字和下劃線。 有一些常用變量被 psql 另眼相待。它們是一些選項設置, 這些選項在運行時可以通過改變變量的值或者改變一些應用的表現狀態而改變。 盡管你可以把這些變量用于其他用途,但是我們不鼓勵這么做,因為程序的特性可能會很快變得非常奇怪。 通常,所有特殊對待的變量都是由大寫字母組成(可能還有數字和下劃線)。 為了保證和未來的最大限度的兼容性,請避免使用這樣的變量。 下面是一個所有特殊對待的變量列表。
AUTOCOMMIT
如果是 on(缺省),那么每個 SQL 命令都在成功完成后自動提交。 要推遲這種模式下的提交,你必須輸入一個 BEGIN 或者 START TRANSACTION SQL 命令。 如果是 off 或者未設置,SQL 命令不會提交,知道你明確地發出 COMMIT 或者 END。 關閉自動提交的模式是通過為你明確發出一個 BEGIN 實現的, 它是放在任何尚未在一個事務塊中并且自己不是 BEGIN 或者其它事務控制命令也不是那些不能在事務塊里執行的命令 (比如 VACUUM)的前面。
注意: 在關閉自動提交的模式下,你必須明確放棄任何失敗的事務,方法是執行 ABORT 或者 ROLLBACK。 還要注意如果你不提交就退出會話,你的工作會丟失。
注意: 自動提交打開方式是 PostgreSQL 傳統的行為, 但是關閉自動提交更接近 SQL 規范。如果你喜歡關閉自動提交,你應該在你的 .psqlrc 文件里設置它。
DBNAME
你正在聯接著的數據庫名稱。 每次你與一個數據庫聯結都會設置這個值(包括程序啟動),但是可以刪除。
ECHO
如果置為 all, 輸入的或者來自鍵盤或者一個腳本的所有行在分析或執行前都寫到標準輸出。 要在程序啟動時聲明這些,使用 -a如果設置為 queries, psql 只是在查詢發送給服務器之前打印出來。 實現這個功能的命令行選項是 -e。
ECHO_HIDDEN
當設置了這個變量并且一個反斜杠命令查詢數據庫時,首先顯示查詢。 這樣你可以學習 PostgreSQL 內部的東西并且在你自己的程序里提供類似功能。如果你設置該變量的值為 "noexec",查詢只是顯示出來但是實際上不發送到服務器和執行。
ENCODING
當前的客戶端字符集編碼。
HISTCONTROL
如果這個變量設置為 ignorespace, 以空格開始的行將不會進入歷史列表。 如果設置為變量 ignoredups, 與以前歷史記錄里匹配的行也不會進入歷史記錄。值 ignoreboth是上面兩個的結合。 如果刪除此變量或者其值為任何與上面的值不同的東西, 所有交互模式讀入的行都被保存入歷史列表。
注意: 這個特性是無恥地從 Bash 里剽竊來的。
HISTFILE
此文件將用于存儲歷史列表。缺省值是 ~/.psql_history。 比如,在 ~/.psqlrc 里使用:
\set HISTFILE ~/.psql_history- :DBNAME
將令 psql 為每個數據庫維護一個獨立的歷史。
注意: 這個特性是從 Bash 里偷學來的。
HISTSIZE
存在命令歷史里的命令的個數。缺省值是 500。
Note: 這個特性是無恥地從 Bash里剽竊來的。
HOST
當前你正聯接的數據庫服務器主機。 這是在每次你與數據庫聯接時(包括程序啟動)設置的,但是可以刪除。
IGNOREEOF
如果刪除此變量,向一個交互的 psql會話發送一個 EOF (通常是 Control-D)將終止應用。如果設置為一個數字值,那么在應用終止前該數值的 EOF 字符將被忽略。 如果設置了此變量但是沒有數字值,缺省是 10。
注意: 這個特性是無恥地從 Bash 里剽竊來的。
LASTOID
最后影響的oid值,即為從一條 INSERT 或 lo_insert 命令返回的值。 此變量只保證在下一條 SQL 命令的結果顯示之前有效。
ON_ERROR_ROLLBACK
如果是 on,如果一個事務塊里的語句產生一個錯誤, 那么這個錯誤被忽略而事務講繼續。如果是 interactive, 那么這樣的錯誤只是在交互的會話里忽略,而不是在從讀取腳本文件的時候。 如果是 off(缺省),事務塊里一個語句生成的錯誤將會回滾整個事務。 on_error_rollback-on 的模式是通過在一個事務塊的每個命令前為你隱含地發出一個 SAVEPONT 的方式工作的,在發生錯誤的時候回滾到該事務塊。
ON_ERROR_STOP
缺省時,如果非交互的腳本碰到一個錯誤,象一條錯誤的 SQL 命令或者內部元命令,處理會繼續進行。 這是 psql 的傳統特性, 但是有時候我們不太希望這樣。如果設置了這個變量,腳本處理將馬上停止。 如果該腳本是從另外一個腳本調用的,那個腳本也會按同樣的方式停止。 如果最外層的腳本不是從一次交互的 psql 會話中調用的而是用 -f 選項調用的,psql 將返回錯誤代碼 3,以示這個情況與致命錯誤條件的區別(錯誤代碼 1)。
PORT
當前你正在聯接的數據庫服務器的端口。 這是在每次你與數據庫聯接時(包括程序啟動)設置的,但是可以刪除。
PROMPT1
PROMPT2
PROMPT3
這些指明psql 顯示的提示符看上去象什么。 參閱下面的 提示符。
QUIET
這個變量等效于命令行選項 -q。 可能在交互模式下沒有什么用。
SINGLELINE
這個變量等效于設置命令行選項 -S。你可以在運行時刪除或設置它。
SINGLESTEP
這個變量等效于命令行選項 -s。
USER
當前你正用于聯接的數據庫用戶。 這是在每次你與數據庫聯接時(包括程序啟動)設置的,但是可以刪除/重置。
VERBOSITY
這個選項可以設置為值 default,verbose,或者 terse 以控制錯誤報告的冗余行。
SQL 代換
一個附加的 psql 變量的有用特性是你可以把它們替換("代換")成正規的 SQL 語句。這樣做的語法同樣還是變量名前面加一個冒號(:)。
testdb=> \set foo 'my_table'
testdb=> SELECT * FROM :foo;
將會查詢表my_table。變量的值是逐字拷貝的, 所以它甚至可以包含不對稱的引號或反斜杠命令。你必須保證你輸入的東西是有意義的。 變量替換將不會在引號引起來的 SQL 語句里面發生。
利用這個功能的一個時髦的應用是通過使用一個隨后的語句中最后插入的 OID 建立一個外鍵仿真場景。 另一個可能用到這個機制的地方是把一個文件的內容拷貝到一個字段里面去。 首先把文件裝載到一個變量然后象上面那樣處理。
testdb=> \set content '\'' cat my_file.txt
'\''
testdb=> INSERT INTO my_table VALUES (:content);
這樣處理的一個可能問題是 my_file.txt 可能包含單引號。這些需要被逃逸以免在處理第三行時不會導致語法錯誤。 可以使用程序 sed來做這個處理:
testdb=> \set content '\'' sed -e "s/'/\\\\\\'/g" < my_file.txt
'\''
觀察正確數量的反斜杠(6)!你可以這樣解釋它:在 psql 分析完這行后,它把 sed -e "s/'/\\'/g" < my_file.txt 傳遞給shell。 shell 將對雙引號里的東西做其處理然后用參數 -e 和 s/'/\'/g執行 sed。當 sed分析這些時, 它將把雙反斜杠替換為單個反斜杠然后進行替換。 可能有時候你認為所有 Unix 命令使用同一個逃逸字符是個好事。 但具有諷刺意味的事實是你可能不得不逃逸所有反斜杠,因為 SQL 文本常量同樣也慘遭這種解釋。 這種情況下你可能最好在外部準備文件。
因為冒號也可以合法的出現在 SQL 命令里,便有下面規則的應用: 如果沒有設置變量,字符序列 "冒號+名稱" 不會被改變。 在任何情況下你都可以用反斜杠逃逸冒號以保護它免于被解釋。 (變量的冒號語法是 SQL 用于嵌入查詢語言的標準,如ECPG。用于數組片段和類型轉換的冒號語法是 PostgreSQL 擴展,因此有沖突。)
提示符
psql使用的提示符可以根據你的喜好客戶化。三個變量 PROMPT1,PROMPT2,和 PROMPT3 包含描述提示符的外觀的字串和特殊逃逸序列。Prompt 1 是 psql 請求一個新命令時的使用的正常提示符。 Prompt 2 是在一個命令輸入期待更多輸入時(因為查詢沒有用一個分號結束或者引號沒有關閉)顯示的提示符。 Prompt 3 在你運行一個 SQL COPY 命令和等待你在終端上鍵入記錄時使用。
相應的提示符變量的值是按字面打印的,除非碰到一個百分號(%)。這時某些其他的文本被替換, 替換為何物取決于下一個字符。已定義的替換是:
%M
數據庫服務器主機名全名(帶著域名),如果聯接是通過 Unix 域套接字進行的就是 [local], 或者如果 Unix 域套接字不是編譯的缺省位置,就是 [local:/dir/name]。
%m
數據庫服務器的主機名刪去第一個點后面的部分剩下的東西。 或者如果聯接是通過 Unix 域套接字,就是 [local]。
%>
數據庫服務器正在偵聽的端口號。
%n
數據庫會話的用戶名。 (這個值的擴展可能在一個數據庫會話過程中因為 SET SESSION AUTHORIZATION 命令而改變。)
%/
當前數據庫名稱。
%~
類似 %/, 但如果數據庫是你的缺省數據庫輸出是"~" (波浪線(tilde))。
%#
如果會話用戶是數據庫超級用戶,使用 "#",否則用">"。 (這個值的擴展可能在一個數據庫會話過程中因為 SET SESSION AUTHORIZATION 命令而改變。)
%R
對于 prompt 1 通常是 =,但是如果是單行模式則是 ^,而如果會話與數據庫斷開(如果 \connect 失敗可能發生)是 !。對于 prompt 2 該序列被 -,*,一個單引號,一個雙引號或者一個美元符代替,這取決于 psql是否等待更多的輸入(因為查詢沒有終止,或著正在一個 /* ... */注釋里面,或者因為你在引號或者美元符擴展里面)。對于 prompt 3 該序列不解釋成任何東西。
%x
事務狀態:如果不在事務塊里,是一個空字串,如果在事務塊里,是 *, 如果在一個失敗的事務塊里是 !,或者無法判斷事務狀態時為 ? (比如,因為沒有連接)。
%digits
指定字節值的字符被替換到該位置。
%:name:
psql變量name的值。參閱 變量 節獲取細節。
%command
command的輸出, 類似于通常的"反勾號(back-tick)" 替換。
%[ ... %]
提示可以包含終端控制字符,這些字符可以改變顏色,北京,或者提示文本的風格, 或者改變終端窗口的標題。為了讓 Readline 的行編輯特性正確運行, 這些不可打印的控制字符必須設計成不可見的,方法是用 %[ 和 %] 包圍它們。 在提示符里可能出現這些東西的多個配對。
testdb=> \set PROMPT1 '%[%033[1;33;40m%]%n@%/%R%[%033[0m%#%] '
這樣的結果是在 VT100 兼容的可顯示彩色的終端上的一個寬體(1;)黑底黃字(33;40)。
要在提示符里插入百分號,鍵入%%。缺省提示符等效于 '%/%R%# ' 用于 prompts 1 和 2,以及'>> ' 用于 prompt 3。
注意: 這個特性是無恥地從tcsh 里剽竊來的。
命令行編輯
psql 為了編輯和檢索命令行的方便支持 Readline 和歷史庫。 命令歷史在 psql 退出的時候自動保存,在 psql 啟動的時候裝載。 還支持 Tab 補齊,盡管該補齊邏輯并不是一個 SQL 分析器必備的。 如果因某些原因你不喜歡 tab 補齊,你可以把下面幾行放在你的家目錄的一個叫 .inputrc 的文件里關閉這個特性:
$if psql
set disable-completion on
$endif
(這不是psql 的特性, 是 Readline 的。參考它的文檔獲取更多細節。)
環境
PAGER
如果查詢結果在一頁里放不下,那么它們被定向到這個命令。 典型的值是 more 或者 less。 缺省的是平臺相關的。我們可以用 \pset 命令關閉分頁器。
PGDATABASE
缺省數據庫
PGHOST
PGPORT
PGUSER
缺省連接參數
PSQL_EDITOR
EDITOR
VISUAL
\e 命令使用的編輯器。這些變量是按照上面的順序檢查的;設置最早的最先使用。
SHELL
\! 命令執行的命令。
TMPDIR
存儲臨時文件的目錄。缺省是 /tmp。
文件
在啟動之前,psql 視圖讀取系統的 psqlrc 文件和執行來自用戶家目錄的文件 ~/.psqlrc 里面的命令。 (在 Windows 里,用戶的啟動文件名字叫 %APPDATA%\postgresql\psqlrc.conf。) 參閱 PREFIX/share/psqlrc.sample 獲取如何設置全系統的文件的信息。 可將它用于設置客戶端或者服務器的風格(使用 \set和SET命令)。
系統的 psqlrc 和用戶自己的 ~/.psqlrc 都可以通過在后面附著一個劃線和 PostgreSQL 版本號的方法變得與版本相關, 比如 ~/.psqlrc-8.1。 匹配版本相關的文件比無版本的文件優先讀取。
命令行歷史存儲在 ~/.psql_history,或者在 Windows 里是 %APPDATA%\postgresql\psql_history。
注意
一些 psql的早期版本允許一個單字母的反斜杠命令(元命令)的第一個參數直接跟在命令后面, 而不用空白間隔。出于兼容性原因,這個特性仍然在某些程度上被支持,但是我不準備在這里詳細解釋,因為我不鼓勵這樣使用。 不過如果你收到莫名其妙的信息,想想這個用法。例如
testdb=> \foo
Field separator is "oo".
可能不是你想要的東西。
psql 只能與同版本的服務器平穩地工作。 這不意味著其他組合會完全失敗,但是可能有微小的或者不那么微小的問題。 如果服務器的版本不同,反斜杠命令是特別容易失效的。
$ \l #列出所有的數據庫
$ \d #查看表的結構
$ \d 表名 #查看指定表的具體結構
$ create database 新數據庫名 #創建新的數據庫
$ \c 已經有的數據庫名 #切換當前數據庫到指定的數據庫
$ psql -h 主機名/ip地址 -p 端口號 數據庫名稱 用戶名稱 #連接到指定的數據庫
$ \d #顯示所有的表
$ \d 表名 #顯示指定的表的結構
$ \d 索引名 #顯示指定索引的結構
$ \d 后跟通配符或者?等 #?代表匹配一個 代表匹配多個,如\d s*會匹配以s開頭后跟任意個字符的表或者索引并顯示出來,\d s?會匹配以s開頭后跟一個字符的表或者索引并顯示出來
$ \d+ #該命令會比\d命令顯示更詳細的信息,除了前面介紹的那些,它還會顯示任何與表相關聯的注釋,以及表中出現的OID,\d+可以代替之前的任意以\d開頭的命令
$ \dt #只顯示表
$ \di #只顯示所有的索引
$ \ds #只顯示序列
$ \dv #只顯示視圖
$ \df #只顯示函數
$ \timing on #顯示SQL的執行時間
$ \timing off #關閉顯示SQL的執行時間
$ \dn #顯示所有的schema
$ \db #顯示所有的表空間
$ \du 或者 \dg #顯示數據庫中的所有角色和用戶
$ \dp 或者 \z 表名 #顯示表的權限分配情況
$ \encoding utf8 #當客戶端的字符編碼和服務器的不一樣時,可能會顯示亂碼,可以使用\encoding命令來指定客戶端的字符編碼,如使用\encoding utf8來指定客戶端的編碼方式為utf8
\pset命令用于指定輸出的格式,具體如下:
\pset border 0 : 表示輸出內容物邊框
\pset border 1 : 表示邊框只在內部,默認情況下采用的是該條命令
\pset border 2 : 表示內外都存在邊框
歷史命令與補全功能
使用上下鍵可以查看歷史命令
兩次tab鍵可以實現命令補全或者給出輸入提示
在psql中事務是自動提交的,比方說,執行完一條create table語句之后,事務就會被自動的提交,如果不想自動的提交,方法有兩種:
方案一:運行begin命令,然后執行相應的SQL語句,最后在執行commit或者rollback語句
方案二:直接使用psql中的命令關閉自動提交的功能,\set AUTOCOMMIT off ,該命令設置自動提交關閉
實際上,MySQL等數據庫也是這樣的情況,當我們不使用顯示的事務語句時,每一條SQL語句都被作為一個事務,或者說數據庫內部將每一個SQL語句封裝為一個事務,在PostgreSQL中仍然是這樣的,平時使用時要注意。
得到psql中真實執行的SQL語句
aoldbs=# help
You are using psql, the command-line interface to PostgreSQL.
Type: \copyright for distribution terms
\h for help with SQL commands
\? for help with psql commands
\g or terminate with semicolon to execute query
\q to quit
aoldbs=#
eg:查看SQL commands
aoldbs=# \h drop table
Command: DROP TABLE
Description: remove a table
Syntax:
DROP TABLE [ IF EXISTS ] name [, ...] [ CASCADE | RESTRICT ]
aoldbs=#
\?查看PSQL命令
General
\copyright show PostgreSQL usage and distribution terms
\g [FILE] or ; execute query (and send results to file or |pipe)
\gset [PREFIX] execute query and store results in psql variables
\q quit psql
\watch [SEC] execute query every SEC seconds
Help
\? [commands] show help on backslash commands
\? options show help on psql command-line options
\? variables show help on special variables
\h [NAME] help on syntax of SQL commands, * for all commands
Query Buffer
\e [FILE] [LINE] edit the query buffer (or file) with external editor
\ef [FUNCNAME [LINE]] edit function definition with external editor
\p show the contents of the query buffer
\r reset (clear) the query buffer
\w FILE write query buffer to file
Input/Output
\copy ... perform SQL COPY with data stream to the client host
\echo [STRING] write string to standard output
\i FILE execute commands from file
\ir FILE as \i, but relative to location of current script
\o [FILE] send all query results to file or |pipe
\qecho [STRING] write string to query output stream (see \o)
Informational
(options: S = show system objects, + = additional detail)
\d[S+] list tables, views, and sequences
\d[S+] NAME describe table, view, sequence, or index
\da[S] [PATTERN] list aggregates
\db[+] [PATTERN] list tablespaces
\dc[S+] [PATTERN] list conversions
\dC[+] [PATTERN] list casts
\dd[S] [PATTERN] show object descriptions not displayed elsewhere
\ddp [PATTERN] list default privileges
\dD[S+] [PATTERN] list domains
\det[+] [PATTERN] list foreign tables
\des[+] [PATTERN] list foreign servers
\deu[+] [PATTERN] list user mappings
\dew[+] [PATTERN] list foreign-data wrappers
\df[antw][S+] [PATRN] list [only agg/normal/trigger/window] functions
\dF[+] [PATTERN] list text search configurations
\dFd[+] [PATTERN] list text search dictionaries
\dFp[+] [PATTERN] list text search parsers
\dFt[+] [PATTERN] list text search templates
\dg[+] [PATTERN] list roles
\di[S+] [PATTERN] list indexes
\dl list large objects, same as \lo_list
\dL[S+] [PATTERN] list procedural languages
\dm[S+] [PATTERN] list materialized views
\dn[S+] [PATTERN] list schemas
\do[S] [PATTERN] list operators
\dO[S+] [PATTERN] list collations
\dp [PATTERN] list table, view, and sequence access privileges
\drds [PATRN1 [PATRN2]] list per-database role settings
\ds[S+] [PATTERN] list sequences
\dt[S+] [PATTERN] list tables
\dT[S+] [PATTERN] list data types
\du[+] [PATTERN] list roles
\dv[S+] [PATTERN] list views
\dE[S+] [PATTERN] list foreign tables
\dx[+] [PATTERN] list extensions
\dy [PATTERN] list event triggers
\l[+] [PATTERN] list databases
\sf[+] FUNCNAME show a function's definition
\z [PATTERN] same as \dp
Formatting
\a toggle between unaligned and aligned output mode
\C [STRING] set table title, or unset if none
\f [STRING] show or set field separator for unaligned query output
\H toggle HTML output mode (currently off)
\pset [NAME [VALUE]] set table output option
(NAME := {format|border|expanded|fieldsep|fieldsep_zero|footer|null|
numericlocale|recordsep|recordsep_zero|tuples_only|title|tableattr|pager|
unicode_border_linestyle|unicode_column_linestyle|unicode_header_linestyle})
\t [on|off] show only rows (currently off)
\T [STRING] set HTML <table> tag attributes, or unset if none
\x [on|off|auto] toggle expanded output (currently off)
Connection
\c[onnect] {[DBNAME|- USER|- HOST|- PORT|-] | conninfo}
connect to new database (currently "aoldbs")
\encoding [ENCODING] show or set client encoding
\password [USERNAME] securely change the password for a user
\conninfo display information about current connection
Operating System
\cd [DIR] change the current working directory
\setenv NAME [VALUE] set or unset environment variable
\timing [on|off] toggle timing of commands (currently off)
! [COMMAND] execute command in shell or start interactive shell
Variables
\prompt [TEXT] NAME prompt user to set internal variable
\set [NAME [VALUE]] set internal variable, or list all if no parameters
\unset NAME unset (delete) internal variable
Large Objects
\lo_export LOBOID FILE
\lo_import FILE [COMMENT]
\lo_list
\lo_unlink LOBOID large object operations
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。