gsql是openGauss提供在命令行下運(yùn)行的數(shù)據(jù)庫(kù)連接工具,可以通過(guò)此工具連接服務(wù)器并對(duì)其進(jìn)行操作和維護(hù),除了具備操作數(shù)據(jù)庫(kù)的基本功能,gsql還提供了若干高級(jí)特性,便于用戶使用。
基本功能
- 連接數(shù)據(jù)庫(kù)
- 執(zhí)行SQL語(yǔ)句
- 執(zhí)行元命令
高級(jí)特性
變量
gsql提供類似于linux的shell命令的變量特性,可以使用gsql的袁明玲\set設(shè)置一個(gè)變量
\set varname value
刪除一個(gè)變量
unset varname
說(shuō)明:
- 變量只是簡(jiǎn)單的名稱/值對(duì),這里的值可以是任意長(zhǎng)度。
- 變量名稱必須由字母(包括非拉丁字母)、數(shù)字和下劃線組成,且對(duì)大小寫敏感。
- 如果使用\set varname的格式,不帶第二個(gè)參數(shù),則只設(shè)置這個(gè)變量而沒(méi)有對(duì)這個(gè)變量賦值。
- 可以使用不帶參數(shù)的\set顯示所有變量。
- 使用:varname的形式獲取變量的值,可以用于sql和元命令。
sql代換
利用gsql的變量特性,可以將常用的sql語(yǔ)句設(shè)置為變量,以簡(jiǎn)化操作。
openGauss=# \set foo 'HR.areaS'
openGauss=# select * from :foo;
area_id | area_name
---------+------------------------
4 | Middle East and Africa
3 | Asia
1 | Europe
2 | Americas
(4 rows)
執(zhí)行以上命令,將會(huì)查詢HR.areaS表。
自定義提示符
gsql使用的提示符支持用戶自定義??梢酝ㄟ^(guò)修改gsql預(yù)留的三個(gè)變量PROMPT1、PROMPT2、PROMPT3來(lái)改變提示符。這三個(gè)變量的值可以用戶自定義,也可以使用gsql預(yù)定義的值。
- PROMPT1: gsql請(qǐng)求一個(gè)新命令時(shí)使用的正常提示符。
- PROMPT2: 在一個(gè)命令輸入期待更多輸入時(shí)(例如,查詢沒(méi)有用一個(gè)分號(hào)結(jié)束或者引號(hào)不完整)顯示的提示符。
- PROMPT3: 當(dāng)執(zhí)行COPY命令,并期望在終端輸入數(shù)據(jù)時(shí)(例如,COPY FROM STDIN),顯示提示符。
命令自動(dòng)補(bǔ)齊
根據(jù)openGauss語(yǔ)法規(guī)則,gsql支持使用tab鍵進(jìn)行命令的自動(dòng)補(bǔ)齊,當(dāng)編譯時(shí)指定了with-readline,且客戶端連接時(shí)指定"-r"參數(shù),此功能被打開(kāi)。
說(shuō)明:
- 支持?jǐn)?shù)據(jù)庫(kù)sql關(guān)鍵字如select、create、table等。
- 支持表明、視圖名等自定義標(biāo)識(shí)符的補(bǔ)齊。
- 袁明玲選項(xiàng)'S'、'+'不支持自動(dòng)補(bǔ)齊。
- 對(duì)表進(jìn)行補(bǔ)齊時(shí),只有前綴時(shí)“pg_”才會(huì)補(bǔ)齊系統(tǒng)表。
- 不支持建表時(shí)字段類型的補(bǔ)齊。
- select后不支持任何補(bǔ)齊。
- 不支持常量與宏的自動(dòng)補(bǔ)齊。
- select * from a,b... 不支持第二個(gè)開(kāi)始表的自動(dòng)補(bǔ)齊,insert into t1 (col1, col2, ...)不支持第二個(gè)列的自動(dòng)補(bǔ)齊。
- 不支持create tablespace語(yǔ)句with以及with后參數(shù)的自動(dòng)補(bǔ)齊。
- 創(chuàng)建索引不支持local、 global的自動(dòng)補(bǔ)齊,修改索引不支持rebuild自動(dòng)補(bǔ)齊。
- set語(yǔ)句僅支持自動(dòng)補(bǔ)全user和superuser級(jí)別的參數(shù)。
- 不支持if exists的自動(dòng)補(bǔ)齊。
- 不支持表明.列明的自動(dòng)補(bǔ)齊
- 不支持自定義操作符的自動(dòng)補(bǔ)齊。使用復(fù)制粘貼這種方式輸入命令,如果粘貼的命令里面有TAB鍵有可能會(huì)使輸入命令的格式錯(cuò)亂,無(wú)法正常執(zhí)行。
客戶端操作歷史記錄
gsql支持客戶端操作歷史記錄,當(dāng)客戶端連接時(shí)指定“-r”參數(shù),此功能被打開(kāi)??梢酝ㄟ^(guò)\set設(shè)置記錄歷史的條數(shù),例如,\set HISTSIZE 50,將記錄歷史的條數(shù)設(shè)置為50,\set HISTSIZE 0,不記錄歷史。
說(shuō)明:
- 客戶端操作歷史記錄條數(shù)默認(rèn)設(shè)置為32條,最多支持記錄500條。當(dāng)客戶端交互式輸入包含中文字符時(shí),只支持UTF-8 的編碼環(huán)境。
- 出于安全考慮,將包含PASSWORD、IDENTIFIED敏感詞的記錄識(shí)別為敏感信息,不會(huì)記錄到歷史信息中,即不能通過(guò)上下翻回顯。
常用元命令
連接數(shù)據(jù)庫(kù) 使用 -E參數(shù)可以顯示元命令具體執(zhí)行的SQL信息
| 符號(hào) | 用法 |
|---|---|
| \l | 現(xiàn)實(shí)數(shù)據(jù)庫(kù)中數(shù)據(jù)庫(kù)信息 |
| \du同\dg | 顯示數(shù)據(jù)庫(kù)中所有用戶和角色 |
| \db | 顯示數(shù)據(jù)庫(kù)中所有表空間信息 |
| \dn | 顯示數(shù)據(jù)庫(kù)中所有schema信息 |
| \d | 顯示當(dāng)前數(shù)據(jù)庫(kù)下相關(guān)數(shù)據(jù)庫(kù)對(duì)象(包含表、視圖、物化視圖、序列、外部表、stream、contview) |
| \d tablename | 查看某個(gè)表的詳細(xì)信息 |
| \dt | 顯示當(dāng)前數(shù)據(jù)庫(kù)中所有的表 |
| \dt+ | ## 以擴(kuò)展方式顯示當(dāng)前數(shù)據(jù)庫(kù)所有表信息,比起\dt 多了最后一列描述信息 |
| \di | 查看當(dāng)前數(shù)據(jù)庫(kù)中索引信息 |
| \di indexname | 查看當(dāng)前數(shù)據(jù)庫(kù)某個(gè)索引的信息 |
| \dv | 查看當(dāng)前數(shù)據(jù)庫(kù)視圖信息 |
| \ds | 查看當(dāng)前數(shù)據(jù)庫(kù)序列信息 |
| \df | 查看當(dāng)前數(shù)據(jù)庫(kù)函數(shù)信息 |
| \dx | 查看已安裝的擴(kuò)展程序信息 |
| \x [on|off|auto] | 設(shè)置語(yǔ)句的輸出模式,模式為行的方式輸出,執(zhí)行 \x on 切換為以列的方式來(lái)顯示 |
| \timing [on|off] | 控制顯示SQL的執(zhí)行時(shí)間,默認(rèn)為off, on 為顯示SQL語(yǔ)句的執(zhí)行時(shí)間 |
| \h | 用于獲取sql語(yǔ)句的幫助,例如\h merge |
| ? | 獲取gsql元命令的幫助 |
| !os_command | 用于執(zhí)行操作系統(tǒng)命令 |
| \o filename | 用于重定向輸出到文件,注意這個(gè)不是簡(jiǎn)單的將屏幕的內(nèi)容輸出到文本,而是將SQL語(yǔ)句正確執(zhí)行的結(jié)果輸出到文本 |
| \conninfo | 顯示gsql中顯示會(huì)話的連接信息 |
| \c [dbname] | 切換數(shù)據(jù)庫(kù) |
| \echo [string] | 打印字符串 |
| \q | 退出gsql |