GaussDB gsql概述

介绍了gsql的基本功能以及高级特性

基本功能

1.连接数据库:默认只支持远程连接数据库。

说明:gsql创建连接时,会有5分钟超时时间。如果在这个时间内,数据库未正确地接受连接并对身份进行认证,gsql将超时退出。

针对此问题,可以参考常见问题处理。

2.执行SQL语句:支持交互式地键入并执行SQL语句,也可以执行一个文件中指定的SQL语句。

3.执行元命令:元命令可以帮助管理员查看数据库对象的信息、查询缓存区信息、格式化SQL输出结果,以及连接到新的数据库等。元命令的详细说明请参见元命令参考。

高级特性

特性名称
描述

变量

gsql提供类似于Linux的shell命令的变量特性,可以使用gsql的元命令\set设置一个变量,格式如下:

\set varname value

删除由\set命令设置的变量请使用如下方式:

\unset varname

说明

变量只是简单的名称/值对,这里的值可以是任意长度。

变量名称必须由字母(包括非拉丁字母)、数字和下划线组成,且对大小写敏感。

如果使用\set varname的格式(不带第二个参数),则只是设置这个变量而没有给变量赋值。

可以使用不带参数的\set来显示所有变量的值。变量的示例和详细说明请参见变量。

SQL代换

利用gsql的变量特性,可以将常用的SQL语句设置为变量,以简化操作。

SQL代换的示例和详细说明请参见SQL代换。

自定义提示符

gsql使用的提示符支持用户自定义。可以通过修改gsql预留的三个变量PROMPT1、PROMPT2、PROMPT3来改变提示符。

这三个变量的值可以用户自定义,也可以使用gsql预定义的值。详细请参见提示符。

客户端操作历史记录

gsql支持客户端操作历史记录,当客户端连接时指定“-r”参数,此功能被打开。可以通过\set设置记录历史的条数,例如,\set HISTSIZE 50,将记录历史的条数设置为50,\set HISTSIZE 0,不记录历史。

说明

1.客户端操作历史记录条数默认设置为32条,最多支持记录500条。当客户端交互式输入包含中文字符时,只支持UTF-8 的编码环境。

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等字符串(不区分大小写)的SQL语句记录识别为包含敏感信息的语句,不会记录到历史信息中,即不能通过上下翻回显。

变量

可以使用gsql元命令\set设置一个变量。例如把变量foo的值设置为bar:openGauss=# \set foo bar要引用变量的值,在变量前面加冒号。例如查看变量的值:openGauss=# \echo :foo bar

这种变量的引用方法适用于规则的SQL语句和元命令。

gsql预定义了一些特殊变量,同时也规划了变量的取值。为了保证和后续版本最大限度地兼容,请避免以其他目的使用这些变量。

说明:

所有特殊变量都由大写字母、数字和下划线组成。

要查看特殊变量的默认值,请使用元命令\echo :varname(例如\echo :DBNAME)。

SQL代换

像元命令的参数一样,gsql变量的一个关键特性是可以把gsql变量替换成正规的SQL语句。此外,gsql还提供为变量更换新的别名或其他标识符等功能。使用SQL代换方式替换一个变量的值可在变量前加冒号。例如:

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)

执行以上命令,将会查询HR.areaS表。

须知:变量的值是逐字复制的,甚至可以包含不对称的引号或反斜杠命令。所以必须保证输入的内容有意义。

提示符

通过表中三个变量可以设置gsql的提示符,这些变量是由字符和特殊的转义字符所组成。

变量
描述
示例

PROMPT1

gsql请求一个新命令时使用的正常提示符。

PROMPT1的默认值为:

%/%R%#

使用变量PROMPT1切换提示符:

l提示符变为[local]:

openGauss=> \set PROMPT1 %M

[local:/tmp/gaussdba_mppdb]

l提示符变为name:

openGauss=> \set PROMPT1 name

name

l提示符变为=:

openGauss=> \set PROMPT1 %R

=

PROMPT2

在一个命令输入期待更多输入时(例如,查询没有用一个分号结束或者引号不完整)显示的提示符。

使用变量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

当执行COPY命令,并期望在终端输入数据时(例如,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

>>>>\.

环境变量

名称
描述

COLUMNS

如果\set columns为0,则由此参数控制wrapped格式的宽度。这个宽度用于决定在自动扩展的模式下,是否要把宽输出模式变成竖线的格式。

PAGER

如果查询结果无法在一页显示,它们就会被重定向到这个命令。可以用\pset命令关闭分页器。典型的是用命令more或less来实现逐页查看。缺省值是平台相关的。

说明:less的文本显示,受系统环境变量LC_CTYPE影响。

PSQL_EDITOR

\e和\ef命令使用环境变量指定的编辑器。变量是按照列出的先后顺序检查的。在Unix系统上默认的编辑工具是vi。

EDITOR

VISUAL

PSQL_EDITOR_LINENUMBER_ARG

当\e和\ef带上一行数字参数使用时,这个变量指定的命令行参数用于向编辑器传递起始行数。像Emacs或vi这样的编辑器,这只是个加号。如果选项和行号之间需要空白,在变量的值后加一个空格。例如:

PSQL_EDITOR_LINENUMBER_ARG = '+'  

PSQL_EDITOR_LINENUMBER_ARG='--line '

Unix系统默认的是+。

PSQLRC

用户的.gsqlrc文件的交互位置。

SHELL

使用\!命令跟shell执行的命令是一样的效果。

TMPDIR

存储临时文件的目录。缺省是/tmp。

GaussDB gsql使用指导

前提条件

连接数据库时使用的用户需要具备访问数据库的权限。

操作步骤

步骤 1使用gsql连接到GaussDB实例。

gsql工具使用-d参数指定目标数据库名、-U参数指定数据库用户名、-h参数指定主机名、-p参数指定端口号信息。

说明:若未指定数据库名称,则使用初始化时默认生成的数据库名称;若未指定数据库用户名,则默认使用当前操作系统用户作为数据库用户名;当某个值没有前面的参数(-d、-U等)时,若连接的命令中没有指定数据库名(-d)则该参数会被解释成数据库名;如果已经指定数据库名(-d)而没有指定数据库用户名(-U)时,该参数则会被解释成数据库用户名。

示例2,使用jack用户连接到远程主机postgres数据库的8000端口。

gsql -h 10.180.123.163 -d postgres -U jack -p 8000

详细的gsql参数请参见命令参考。

步骤 2执行SQL语句。

以创建数据库human_staff为例。

CREATE DATABASE human_staff;

CREATE DATABASE

通常,输入的命令行在遇到分号的时候结束。如果输入的命令行没有错误,结果就会输出到屏幕上。

步骤 3执行gsql元命令。

以列出GaussDB中所有的数据库和描述信息为例。

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元命令请参见元命令参考。

----结束

专题内容推荐

活动规则

活动对象:华为云电销客户及渠道伙伴客户可参与消费满送活动,其他客户参与前请咨询客户经理

活动时间: 2020年8月12日-2020年9月11日

活动期间,华为云用户通过活动页面购买云服务,或使用上云礼包优惠券在华为云官网新购云服务,累计新购实付付费金额达到一定额度,可兑换相应的实物礼品。活动优惠券可在本活动页面中“上云礼包”等方式获取,在华为云官网直接购买(未使用年中云钜惠活动优惠券)或参与其他活动的订单付费金额不计入统计范围内;