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