gsql工具

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
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容