GaussDB gsql概述
介紹了gsql的基本功能以及高級(jí)特性
基本功能
1.連接數(shù)據(jù)庫(kù):默認(rèn)只支持遠(yuǎn)程連接數(shù)據(jù)庫(kù)。
說(shuō)明:gsql創(chuàng)建連接時(shí),會(huì)有5分鐘超時(shí)時(shí)間。如果在這個(gè)時(shí)間內(nèi),數(shù)據(jù)庫(kù)未正確地接受連接并對(duì)身份進(jìn)行認(rèn)證,gsql將超時(shí)退出。
針對(duì)此問(wèn)題,可以參考常見(jiàn)問(wèn)題處理。
2.執(zhí)行SQL語(yǔ)句:支持交互式地鍵入并執(zhí)行SQL語(yǔ)句,也可以執(zhí)行一個(gè)文件中指定的SQL語(yǔ)句。
3.執(zhí)行元命令:元命令可以幫助管理員查看數(shù)據(jù)庫(kù)對(duì)象的信息、查詢緩存區(qū)信息、格式化SQL輸出結(jié)果,以及連接到新的數(shù)據(jù)庫(kù)等。元命令的詳細(xì)說(shuō)明請(qǐng)參見(jiàn)元命令參考。
高級(jí)特性
| 
                                         特性名稱 
                                     | 
                                    
                                    
                                    
                                         描述 
                                     | 
                                    
                                  
|---|---|
變量  | 
                                  
                                  gsql提供類似于Linux的shell命令的變量特性,可以使用gsql的元命令\set設(shè)置一個(gè)變量,格式如下: \set varname value 刪除由\set命令設(shè)置的變量請(qǐng)使用如下方式: \unset varname 說(shuō)明 變量只是簡(jiǎn)單的名稱/值對(duì),這里的值可以是任意長(zhǎng)度。 變量名稱必須由字母(包括非拉丁字母)、數(shù)字和下劃線組成,且對(duì)大小寫敏感。 如果使用\set varname的格式(不帶第二個(gè)參數(shù)),則只是設(shè)置這個(gè)變量而沒(méi)有給變量賦值。 可以使用不帶參數(shù)的\set來(lái)顯示所有變量的值。變量的示例和詳細(xì)說(shuō)明請(qǐng)參見(jiàn)變量。  | 
                                  
                                  
SQL代換  | 
                                  
                                  利用gsql的變量特性,可以將常用的SQL語(yǔ)句設(shè)置為變量,以簡(jiǎn)化操作。 SQL代換的示例和詳細(xì)說(shuō)明請(qǐng)參見(jiàn)SQL代換。  | 
                                  
                                  
自定義提示符  | 
                                  
                                  gsql使用的提示符支持用戶自定義。可以通過(guò)修改gsql預(yù)留的三個(gè)變量PROMPT1、PROMPT2、PROMPT3來(lái)改變提示符。 這三個(gè)變量的值可以用戶自定義,也可以使用gsql預(yù)定義的值。詳細(xì)請(qǐng)參見(jiàn)提示符。  | 
                                  
                                  
客戶端操作歷史記錄  | 
                                  
                                  gsql支持客戶端操作歷史記錄,當(dāng)客戶端連接時(shí)指定“-r”參數(shù),此功能被打開(kāi)??梢酝ㄟ^(guò)\set設(shè)置記錄歷史的條數(shù),例如,\set HISTSIZE 50,將記錄歷史的條數(shù)設(shè)置為50,\set HISTSIZE 0,不記錄歷史。 說(shuō)明 1.客戶端操作歷史記錄條數(shù)默認(rèn)設(shè)置為32條,最多支持記錄500條。當(dāng)客戶端交互式輸入包含中文字符時(shí),只支持UTF-8 的編碼環(huán)境。 2.出于安全考慮,將包含PASSWORD、IDENTIFIED、GS_ENCRYPT_AES128、GS_DECRYPT_AES128、GS_ENCRYPT、GS_DECRYPT、PG_CREATE_PHYSICAL_REPLICATION_SLOT_EXTERN、SECRET_ACCESS_KEY、SECRETKEY、CREATE_CREDENTIAL等字符串(不區(qū)分大小寫)的SQL語(yǔ)句記錄識(shí)別為包含敏感信息的語(yǔ)句,不會(huì)記錄到歷史信息中,即不能通過(guò)上下翻回顯。  | 
                                  
                                  
變量
可以使用gsql元命令\set設(shè)置一個(gè)變量。例如把變量foo的值設(shè)置為bar:openGauss=# \set foo bar要引用變量的值,在變量前面加冒號(hào)。例如查看變量的值:openGauss=# \echo :foo bar
這種變量的引用方法適用于規(guī)則的SQL語(yǔ)句和元命令。
gsql預(yù)定義了一些特殊變量,同時(shí)也規(guī)劃了變量的取值。為了保證和后續(xù)版本最大限度地兼容,請(qǐng)避免以其他目的使用這些變量。
說(shuō)明:
所有特殊變量都由大寫字母、數(shù)字和下劃線組成。
要查看特殊變量的默認(rèn)值,請(qǐng)使用元命令\echo :varname(例如\echo :DBNAME)。
SQL代換
像元命令的參數(shù)一樣,gsql變量的一個(gè)關(guān)鍵特性是可以把gsql變量替換成正規(guī)的SQL語(yǔ)句。此外,gsql還提供為變量更換新的別名或其他標(biāo)識(shí)符等功能。使用SQL代換方式替換一個(gè)變量的值可在變量前加冒號(hào)。例如:
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表。
須知:變量的值是逐字復(fù)制的,甚至可以包含不對(duì)稱的引號(hào)或反斜杠命令。所以必須保證輸入的內(nèi)容有意義。
提示符
通過(guò)表中三個(gè)變量可以設(shè)置gsql的提示符,這些變量是由字符和特殊的轉(zhuǎn)義字符所組成。
| 
                                         變量 
                                     | 
                                    
                                    
                                    
                                         描述 
                                     | 
                                    
                                    
                                    
                                         示例 
                                     | 
                                    
                                  
|---|---|---|
PROMPT1  | 
                                  
                                  gsql請(qǐng)求一個(gè)新命令時(shí)使用的正常提示符。 PROMPT1的默認(rèn)值為: %/%R%#  | 
                                  
                                  使用變量PROMPT1切換提示符: l提示符變?yōu)閇local]: openGauss=> \set PROMPT1 %M [local:/tmp/gaussdba_mppdb] l提示符變?yōu)閚ame: openGauss=> \set PROMPT1 name name l提示符變?yōu)?: openGauss=> \set PROMPT1 %R =  | 
                                  
                                  
PROMPT2  | 
                                  
                                  在一個(gè)命令輸入期待更多輸入時(shí)(例如,查詢沒(méi)有用一個(gè)分號(hào)結(jié)束或者引號(hào)不完整)顯示的提示符。  | 
                                  
                                  使用變量PROMPT2顯示提示符: openGauss=# \set PROMPT2 TEST openGauss=# select * from HR.areaS TEST; area_id | area_name ---------+-------------------- 1 | Europe 2 | Americas 4 | Middle East and Africa 3 | Asia (4 rows))  | 
                                  
                                  
PROMPT3  | 
                                  
                                  當(dāng)執(zhí)行COPY命令,并期望在終端輸入數(shù)據(jù)時(shí)(例如,COPY FROM STDIN),顯示提示符。  | 
                                  
                                  使用變量PROMPT3顯示COPY提示符: openGauss=# \set PROMPT3 '>>>>' openGauss=# copy HR.areaS from STDIN; Enter data to be copied followed by a newline. End with a backslash and a period on a line by itself. >>>>1 aa >>>>2 bb >>>>\.  | 
                                  
                                  
環(huán)境變量
| 
                                         名稱 
                                     | 
                                    
                                    
                                    
                                         描述 
                                     | 
                                    
                                  
|---|---|
COLUMNS  | 
                                  
                                  如果\set columns為0,則由此參數(shù)控制wrapped格式的寬度。這個(gè)寬度用于決定在自動(dòng)擴(kuò)展的模式下,是否要把寬輸出模式變成豎線的格式。  | 
                                  
                                  
PAGER  | 
                                  
                                  如果查詢結(jié)果無(wú)法在一頁(yè)顯示,它們就會(huì)被重定向到這個(gè)命令??梢杂肻pset命令關(guān)閉分頁(yè)器。典型的是用命令more或less來(lái)實(shí)現(xiàn)逐頁(yè)查看。缺省值是平臺(tái)相關(guān)的。 說(shuō)明:less的文本顯示,受系統(tǒng)環(huán)境變量LC_CTYPE影響。  | 
                                  
                                  
PSQL_EDITOR  | 
                                  
                                  \e和\ef命令使用環(huán)境變量指定的編輯器。變量是按照列出的先后順序檢查的。在Unix系統(tǒng)上默認(rèn)的編輯工具是vi。  | 
                                  
                                  
EDITOR  | 
                                  
                                  |
VISUAL  | 
                                  
                                  |
PSQL_EDITOR_LINENUMBER_ARG  | 
                                  
                                  當(dāng)\e和\ef帶上一行數(shù)字參數(shù)使用時(shí),這個(gè)變量指定的命令行參數(shù)用于向編輯器傳遞起始行數(shù)。像Emacs或vi這樣的編輯器,這只是個(gè)加號(hào)。如果選項(xiàng)和行號(hào)之間需要空白,在變量的值后加一個(gè)空格。例如: PSQL_EDITOR_LINENUMBER_ARG = '+' PSQL_EDITOR_LINENUMBER_ARG='--line ' Unix系統(tǒng)默認(rèn)的是+。  | 
                                  
                                  
PSQLRC  | 
                                  
                                  用戶的.gsqlrc文件的交互位置。  | 
                                  
                                  
SHELL  | 
                                  
                                  使用\!命令跟shell執(zhí)行的命令是一樣的效果。  | 
                                  
                                  
TMPDIR  | 
                                  
                                  存儲(chǔ)臨時(shí)文件的目錄。缺省是/tmp。  | 
                                  
                                  
GaussDB gsql使用指導(dǎo)
前提條件
連接數(shù)據(jù)庫(kù)時(shí)使用的用戶需要具備訪問(wèn)數(shù)據(jù)庫(kù)的權(quán)限。
操作步驟
步驟 1使用gsql連接到GaussDB實(shí)例。
gsql工具使用-d參數(shù)指定目標(biāo)數(shù)據(jù)庫(kù)名、-U參數(shù)指定數(shù)據(jù)庫(kù)用戶名、-h參數(shù)指定主機(jī)名、-p參數(shù)指定端口號(hào)信息。
說(shuō)明:若未指定數(shù)據(jù)庫(kù)名稱,則使用初始化時(shí)默認(rèn)生成的數(shù)據(jù)庫(kù)名稱;若未指定數(shù)據(jù)庫(kù)用戶名,則默認(rèn)使用當(dāng)前操作系統(tǒng)用戶作為數(shù)據(jù)庫(kù)用戶名;當(dāng)某個(gè)值沒(méi)有前面的參數(shù)(-d、-U等)時(shí),若連接的命令中沒(méi)有指定數(shù)據(jù)庫(kù)名(-d)則該參數(shù)會(huì)被解釋成數(shù)據(jù)庫(kù)名;如果已經(jīng)指定數(shù)據(jù)庫(kù)名(-d)而沒(méi)有指定數(shù)據(jù)庫(kù)用戶名(-U)時(shí),該參數(shù)則會(huì)被解釋成數(shù)據(jù)庫(kù)用戶名。
示例2,使用jack用戶連接到遠(yuǎn)程主機(jī)postgres數(shù)據(jù)庫(kù)的8000端口。
gsql -h 10.180.123.163 -d postgres -U jack -p 8000
詳細(xì)的gsql參數(shù)請(qǐng)參見(jiàn)命令參考。
步驟 2執(zhí)行SQL語(yǔ)句。
以創(chuàng)建數(shù)據(jù)庫(kù)human_staff為例。
CREATE DATABASE human_staff;
CREATE DATABASE
通常,輸入的命令行在遇到分號(hào)的時(shí)候結(jié)束。如果輸入的命令行沒(méi)有錯(cuò)誤,結(jié)果就會(huì)輸出到屏幕上。
步驟 3執(zhí)行g(shù)sql元命令。
以列出GaussDB中所有的數(shù)據(jù)庫(kù)和描述信息為例。
openGauss=# \l
List of databases
Name |Owner | Encoding | Collate | Ctype | Access privileges
----------------+----------+-----------+---------+-------+-----------------------
human_resource | root | SQL_ASCII | C | C |
postgres | root | SQL_ASCII | C | C|
template0 | root | SQL_ASCII | C | C| =c/root +
| | | || root=CTc/root
template1 | root | SQL_ASCII | C | C| =c/root +
| | | || root=CTc/root
human_staff | root | SQL_ASCII | C | C|
(5 rows)
更多gsql元命令請(qǐng)參見(jiàn)元命令參考。
----結(jié)束
專題內(nèi)容推薦
活動(dòng)對(duì)象:華為云電銷客戶及渠道伙伴客戶可參與消費(fèi)滿送活動(dòng),其他客戶參與前請(qǐng)咨詢客戶經(jīng)理
活動(dòng)時(shí)間: 2020年8月12日-2020年9月11日
活動(dòng)期間,華為云用戶通過(guò)活動(dòng)頁(yè)面購(gòu)買云服務(wù),或使用上云禮包優(yōu)惠券在華為云官網(wǎng)新購(gòu)云服務(wù),累計(jì)新購(gòu)實(shí)付付費(fèi)金額達(dá)到一定額度,可兌換相應(yīng)的實(shí)物禮品。活動(dòng)優(yōu)惠券可在本活動(dòng)頁(yè)面中“上云禮包”等方式獲取,在華為云官網(wǎng)直接購(gòu)買(未使用年中云鉅惠活動(dòng)優(yōu)惠券)或參與其他活動(dòng)的訂單付費(fèi)金額不計(jì)入統(tǒng)計(jì)范圍內(nèi);