返回首页

gbase数据、南大通用产品文档:GBase8c

更新日期:2024年09月11日

元命令参考
使用GBase 8c 数据库命令行交互工具登录数据库后,gsql 所提供的元命令。所谓元命
令就是在gsql 里输入的任何以不带引号的反斜杠开头的命令。
注意事项

一个gsql 元命令的格式是反斜杠后面紧跟一个动词,然后是任意参数。参数命令动词
和其他参数以任意个空白字符间隔。

要在参数里面包含空白,必须用单引号把它引起来。要在这样的参数里包含单引号,可

GBase 8c 工具参考手册
南大通用数据技术股份有限公司
24
以在前面加一个反斜杠。任何包含在单引号里的内容都会被进一步进行类似C 语言的
替换:\n(新行)、\t(制表符)、\b(退格)、\r(回车)、\f(换页)、\digits(八进
制表示的字符)、\xdigits(十六进制表示的字符)。

""包围的内容被当做一个命令行传入shell。该命令的输出(删除了结尾的新行)被当
做参数值。

如果不带引号的参数以冒号(:)开头,它会被当做一个gsql 变量,并且该变量的值最
终会成为真正的参数值。

有些命令以一个SQL 标识的名称(比如一个表)为参数。这些参数遵循SQL 语法关于
双引号的规则:
不带双引号的标识强制转换成小写,
而双引号保护字母不进行大小写转
换,并且允许在标识符中使用空白。
在双引号中,
成对的双引号在结果名称中分析成一
个双引号。比如,FOO"BAR"BAZ 解析成fooBARbaz;而"Aweird""name"解析成A
weird"name。

对参数的分析在遇到另一个不带引号的反斜杠时停止。
这里会认为是一个新的元命令的
开始。特殊的双反斜杠序列(\\)标识参数的结尾并将继续分析后面的SQL 语句(如
果存在)。这样SQL 和gsql 命令可以自由的在一行里面混合。但是在任何情况下,一
条元命令的参数不能延续超过行尾。
元命令
元命令的详细说明请参见表2-11 至表2-19。
表2-11 一般的元命令
参数
参数说明
取值范围
\copyright
显示GBase 8c 的版本和版权信息。
——
\g [FILE] or
[PIPE];
执行查询(并将结果发送到文件或管道)。
——
\h(\help)
[NAME]
给出指定SQL 语句的语法帮助。
如果没有给出NAME,gsql
将列出可获得帮助的所有命
令。如果NAME 是一个星号

GBase 8c 工具参考手册
南大通用数据技术股份有限公司
25
参数
参数说明
取值范围
(*),则显示所有SQL 语
句的语法帮助。
\parallel [on
[num]|off]
控制并发执行开关。

on:打开控制并发执行开关,且最大并
发数为num。

off:关闭控制并发执行开关。
说明:

不支持事务中开启并发执行以及并发
中开启事务。

不支持\d 这类元命令的并发。

并发select 返回结果混乱问题,此为客
户可接受,core、进程停止响应不可接
受。

不推荐在并发中使用set 语句,否则导
致结果与预期不一致。

不支持创建临时表。如需使用临时表,
需要在开启parallel 之前创建好,并在
parallel 内部使用。parallel 内部不允许
创建临时表。

\parallel 执行时最多会启动num 个独立
的gsql 进程连接服务器。

\parallel 中所有作业的持续时间不能超
过session_timeout,否则可能会导致并
发执行过程中断连。

在\parallel on 之后一条或多条命令,

等到\parallel off执行后才会执行,
因而,
每个\parallel on 需对应一个\parallel
off,否则会导致\parallel on 之后的命令
无法执行。
num 的默认值:1024。
须知

服务器能接受的最大连
接数受max_connection
及当前已有连接数限
制。

设置num 时请考虑服务
器当前可接受的实际连
接数合理指定。
\q
退出gsql 程序。
在一个脚本文件里,
只在脚
本终止的时候执行。
——
表2-12 查询缓存区元命令

GBase 8c 工具参考手册
南大通用数据技术股份有限公司
26
参数
参数说明
\e [FILE] [LINE]
使用外部编辑器编辑查询缓冲区(或者文件)。
\ef [FUNCNAME [LINE]]
使用外部编辑器编辑函数定义。如果指定了LINE(即行号),
则光标会指到函数体的指定行。
\p
打印当前查询缓冲区到标准输出。
\r
重置(或清空)查询缓冲区。
\w FILE
将当前查询缓冲区输出到文件。
表2-13 输入/输出元命令
参数
参数说明
\copy { table [ ( column_list ) ] | ( query ) }
{ from | to } { filename | stdin | stdout |
pstdin | pstdout } [ with ] [ binary ] [ oids ]
[ delimiter [ as ] 'character' ] [ null [ as ]
'string' ] [ csv [ header ] [ quote [ as ]
'character' ] [ escape [ as ] 'character' ]
[ force quote column_list | * ] [ force not
null column_list ] ][parallel integer]
在任何gsql 客户端登录数据库成功后,可以执行
导入导出数据。
这是一个运行SQL COPY 命令的
操作,但不是读取或写入指定文件的服务器,而
是读取或写入文件,并在服务器和本地文件系统
之间路由数据。这意味着文件的可访问性和权限
是本地用户的权限,而不是服务器的权限,并且
不需要数据库初始化用户权限。
说明

\COPY只适合小批量,
格式良好的数据导入,
不会对非法字符进行预处理,
也无容错能力。
导入数据应优先选择COPY。

\COPY 可以指定数据导入时的客户端数量,
从而实现数据文件的并行导入,目前并发数
范围为[1, 8]。

\COPY 并行导入目前存在以下约束:临时表
的并行导入不支持、在事务内的并行导入不
支持、对二进制文件的并行导入不支持、数
据导入支持AES128 加密时不支持。在这些
情况下,
即使指定了parallel 参数,
仍然会走
非并行流程。
\echo [STRING]
把字符串写到标准输出。
\i FILE
从文件FILE 中读取内容,并将其当作输入,执

GBase 8c 工具参考手册
南大通用数据技术股份有限公司
27
行查询。
\i+ FILE KEY
执行加密文件中的命令。
\ir FILE
和\i 类似,只是相对于存放当前脚本的路径。
\ir+ FILE KEY
和\i+类似,只是相对于存放当前脚本的路径。
\o [FILE]
把所有的查询结果发送到文件里。
\qecho [STRING]
把字符串写到查询结果输出流里
表2-14 显示信息元命令
参数
参数说明
取值范围
示例
\d[S+]
列出当前search_path
中模式下所有的表、

图和序列。当
search_path 中不同模
式存在同名对象时,

显示search_path 中位
置靠前模式下的同名
对象。
——
列出当前search_path
中模式下所有的表、
视图和序列。
gbase=# \d
\d[S+] NAME
列出指定表、
视图和索
引的结构。
——
假设存在表a,列出
指定表a 的结构。
gbase=# \dtable+
a
\d+ [PATTERN]
列出所有表、
视图和索
引。
如果声明了PATTERN,
只显示名称匹配
PATTERN 的表、视图和
索引。
列出所有名称以f 开
头的表、视图和索
引。
gbase=# \d+ f*
\da[S]
[PATTERN]
列出所有可用的聚集
函数以及它们操作的
数据类型和返回值类
型。
如果声明了PATTERN,
只显示名称匹配
PATTERN 的聚集函数。
列出所有名称以f 开
头可用的聚集函数
以及它们操作的数
据类型和返回值类
型。
gbase=# \da f*
\db[+]
列出所有可用的表空
如果声明了PATTERN,
只显示名称匹配
列出所有名称以p 开

GBase 8c 工具参考手册
南大通用数据技术股份有限公司
28
参数
参数说明
取值范围
示例
[PATTERN]
间。
PATTERN 的表空间。
头的可用表空间。
gbase=# \db p*
\dc[S+]
[PATTERN]
列出所有字符集之间
的可用转换。
如果声明了PATTERN,
只显示名称匹配
PATTERN 的转换。
列出所有字符集之
间的可用转换。
gbase=# \dc *
\dC[+]
[PATTERN]
列出所有类型转换。
如果声明了PATTERN,
只显示名称匹配
PATTERN 的转换。
列出所有名称以c 开
头的类型转换。
gbase=# \dC c*
\dd[S]
[PATTERN]
显示所有匹配
PATTERN 的描述。
如果没有给出参数,
则显
示所有可视对象。“对象”
包括:聚集、函数、操作
符、类型、关系(表、视
图、
索引、
序列、
大对象)

规则。
列出所有可视对象。
gbase=# \dd
\ddp
[PATTERN]
显示所有默认的使用
权限。
如果指定了PATTERN,
只显示名称匹配
PATTERN 的使用权限。
列出所有默认的使
用权限。
gbase=# \ddp
\dD[S+]
[PATTERN]
列出所有可用域。
如果声明了PATTERN,
只显示名称匹配
PATTERN 的域。
列出所有可用域。
gbase=# \dD
\ded[+]
[PATTERN]
列出所有的Data
Source 对象。
如果声明了PATTERN,
只显示名称匹配
PATTERN 的对象。
列出所有的Data
Source 对象。
gbase=# \ded
\det[+]
[PATTERN]
列出所有的外部表。
如果声明了PATTERN,
只显示名称匹配
PATTERN 的表。
列出所有的外部表。
gbase=# \det
\des[+]
[PATTERN]
列出所有的外部服务
器。
如果声明了PATTERN,
只显示名称匹配
PATTERN 的服务器。
列出所有的外部服
务器。
gbase=# \des
\deu[+]
[PATTERN]
列出用户映射信息。
如果声明了PATTERN,
只显示名称匹配
PATTERN 的信息。
列出用户映射信息。
gbase=# \deu

GBase 8c 工具参考手册
南大通用数据技术股份有限公司
29
参数
参数说明
取值范围
示例
\deu[+]
[PATTERN]
列出用户映射信息。
如果声明了PATTERN,
只显示名称匹配
PATTERN 的信息。
列出用户映射信息。
gbase=# \deu
\dew[+]
[PATTERN]
列出封装的外部数据。
如果声明了PATTERN,
只显示名称匹配
PATTERN 的数据。
列出封装的外部数
据。
gbase=# \dew
\df[antw][S+]
[PATTERN]
列出所有可用函数以
及它们的参数和返回
的数据类型。

a 代表聚集函数;

n 代表普通函数;

t 代表触发器;

w 代表窗口函数。
如果声明了PATTERN,
只显示名称匹配
PATTERN 的函数。
列出所有可用函数
以及它们的参数和
返回的数据类型。
gbase=# \df
\dF[+]
[PATTERN]
列出所有的文本搜索
配置信息。
如果声明了PATTERN,
只显示名称匹配
PATTERN 的配置信息。
列出所有的文本搜
索配置信息。
gbase=# \dF+
\dFd[+]
[PATTERN]
列出所有的文本搜索
字典。
如果声明了PATTERN,
只显示名称匹配
PATTERN 的字典。
列出所有的文本搜
索字典。
gbase=# \dFd
\dFp[+]
[PATTERN]
列出所有的文本搜索
分析器。
如果声明了PATTERN,
只显示名称匹配
PATTERN 的分析器。
列出所有的文本搜
索分析器。
gbase=# \dFp
\dFt[+]
[PATTERN]
列出所有的文本搜索
模板。
如果声明了PATTERN,
只显示名称匹配
PATTERN 的模板。
列出所有的文本搜
索模板。
gbase=# \dFt
\dg[+]
[PATTERN]
列出所有数据库角色。
说明:
因为用户和群组的概
念被统一为角色,
所以
这个命令等价于\du。
为了和以前兼容,
所以
如果指定了PATTERN,
只显示名称匹配
PATTERN 的角色。
列出名称为‘j_e’所有
数据库角色。
gbase=# \dg j?e

GBase 8c 工具参考手册
南大通用数据技术股份有限公司
30
参数
参数说明
取值范围
示例
保留两个命令。
\dl
\lo_list 的别名,
显示一
个大对象的列表。
——
列出所有的大对象。
gbase=# \dl
\dL[S+]
[PATTERN]
列出可用的程序语言。
如果指定了PATTERN,
只列出名称匹配
PATTERN 的语言。
列出可用的程序语
言。
gbase=# \dL
\dn[S+]
[PATTERN]
列出物化视图。
如果指定了PATTERN,
只列出名称匹配
PATTERN 的物化视图。
列出物化视图。
gbase=# \dm
\dn[S+]
[PATTERN]
列出所有的模式
(名称
空间)。
如果声明了PATTERN,
只列出名称匹配
PATTERN 的模式名。缺
省时,
只列出用户创建的
模式。
列出所有名称以d 开
头的模式以及相关
信息。
gbase=# \dn+ d*
\do[S]
[PATTERN]
列出所有可用的操作
符以及它们的操作数
和返回的数据类型。
如果声明了PATTERN,
只列出名称匹配
PATTERN 的操作符。缺
省时,
只列出用户创建的
操作符。
列出所有可用的操
作符以及它们的操
作数和返回的数据
类型。
gbase=# \do
\dO[S+]
[PATTERN]
列出排序规则。
如果声明了PATTERN,
只列出名称匹配
PATTERN 的规则。缺省
时,
只列出用户创建的规
则。
列出排序规则。
gbase=# \dO
dp [PATTERN]
列出一列可用的表、

图以及相关的权限信
息。
\dp 显示结果如下:

赋予一个角色的
权限
rolename=xxxx/yyyy

赋予public的权限
如果指定了PATTERN,
只列出名称匹配
PATTERN 的表、视图。
列出一列可用的表、
视图以及相关的权
限信息。
gbase=# \dp

GBase 8c 工具参考手册
南大通用数据技术股份有限公司
31
参数
参数说明
取值范围
示例
=xxxx/yyyy
xxxx 表示赋予的权限,
yyyy 表示授予这个权
限的角色。
权限的参数
说明请参见表2-15。
\drds
[PATTERN1
[PATTERN2]]
列出所有修改过的配
置参数。
这些设置可以
是针对角色的、
针对数
据库的或者同时针对
两者的。
PATTERN1 和
PATTERN2 表示要列
出的角色PATTERN 和
数据库PATTERN。
如果声明了PATTERN,
只列出名称匹配
PATTERN 的规则。缺省
或指定*时,则会列出所
有设置。
列出postgres 数据库
所有修改过的配置
参数。
gbase=# \drds *
postgres
\dT[S+]
[PATTERN]
列出所有的数据类型。
如果指定了PATTERN,
只列出名称匹配
PATTERN 的类型。
列出所有的数据类
型。
gbase=# \dT
\du[+]
[PATTERN]
列出所有数据库角色。
说明:
因为用户和群组的概
念被统一为角色,
所以
这个命令等价于\dg。
为了和以前兼容,
所以
保留两个命令。
如果指定了PATTERN,
则只列出名称匹配
PATTERN 的角色。
列出所有数据库角
色。
gbase=# \du
\dE[S+]
[PATTERN]
\di[S+]
[PATTERN]
\ds[S+]
[PATTERN]
\dt[S+]
[PATTERN]
\dv[S+]
[PATTERN]
这一组命令,字母E、
i、
s、
t 和v 分别代表着
外部表、索引、序列、
表和视图。
可以以任意
顺序指定其中一个或
者它们的组合来列出
这些对象。例如:\dit
列出所有的索引和表。
在命令名称后面追加
+,则每一个对象的物
理尺寸以及相关的描
述也会被列出。
如果指定了PATTERN,
只列出名称匹配该
PATTERN 的对象。默认
情况下只会显示用户创
建的对象。通过
PATTERN 或者S 修饰符
可以把系统对象包括在
内。
列出所有的索引和
视图。
gbase=# \div

GBase 8c 工具参考手册
南大通用数据技术股份有限公司
32
参数
参数说明
取值范围
示例
\dx[+]
[PATTERN]
列出安装数据库的扩
展信息。
如果指定了PATTERN,
则只列出名称匹配
PATTERN 的扩展信息。
列出安装数据库的
扩展信息。
gbase=# \dx
\l[+]
列出服务器上所有数
据库的名称、所有者、
字符集编码以及使用
权限。
——
列出服务器上所有
数据库的名称、所有
者、字符集编码以及
使用权限。
gbase=#
\l
\sf[+]
FUNCNAME
显示函数的定义。
说明:
对于带圆括号的函数
名,
需要在函数名两端
添加双引号,
并且在双
引号后面加上参数类
型列表。
参数类型列表
两端添加圆括号。
——
假设存在函数
function_a 和函数名
带圆括号的函数
func()name,列出函
数的定义。
gbase=# \sf
function_a
gbase=# \sf
"func()name"(ar
gtype1,
argtype2)
\z [PATTERN]
列出数据库中所有表、
视图和序列以及它们
相关的访问特权。
如果给出任何pattern ,
则被当成一个正则表达
式,只显示匹配的表、视
图、序列。
列出数据库中所有
表、视图和序列以及
它们相关的访问特
权。
gbase=# \z

表2-14 中的选项S 表示显示系统对象,PATTERN 表示显示对象附加的描述信息。
用来指定要被显示的对象名称。
表2-15 权限的参数说明
参数
参数说明
r
SELECT:允许对指定的表、视图读取数据。
w
UPDATE:允许对指定表更新字段。

GBase 8c 工具参考手册
南大通用数据技术股份有限公司
33
参数
参数说明
a
INSERT:允许对指定表插入数据。
d
DELETE:允许删除指定表中的数据。
D
TRUNCATE:允许清理指定表中的数据。
x
REFERENCES:允许创建外键约束。由于当前不支持外键,所以该
参数暂不生效。
t
TRIGGER:允许在指定表上创建触发器。
X
EXECUTE:允许使用指定的函数以及利用这些函数实现的操作符。
U
USAGE:

对于过程语言,允许用户在创建函数时,指定过程语言。

对于模式,允许访问包含在指定模式中的对象。

对于序列,允许使用nextval 函数。
C
CREATE:

对于数据库,允许在该数据库里创建新的模式。

对于模式,允许在该模式中创建新的对象。

对于表空间,
允许在其中创建表以及允许创建数据库和模式的时
候把该表空间指定为其缺省表空间。
c
CONNECT:允许用户连接到指定的数据库。
T
TEMPORARY:允许创建临时表。
A
ALTER:允许用户修改指定对象的属性。
P
DROP:允许用户删除指定的对象。
m
COMMENT:允许用户定义或修改指定对象的注释。
i
INDEX:允许用户在指定表上创建索引。
v
VACUUM:
允许用户对指定的表执行ANALYZE 和VACUUM 操作。
*
给前面权限的授权选项。

GBase 8c 工具参考手册
南大通用数据技术股份有限公司
34
表2-16 格式化元命令
参数
参数说明
\a
对齐模式和非对齐模式之间的切换。
\C [STRING]
把正在打印的表的标题设置为一个查询的结果或者取消这样
的设置。
\f [STRING]
对于不对齐的查询输出,显示或者设置域分隔符。
\H

若当前模式为文本格式,则切换为HTML 输出格式。

若当前模式为HTML 格式,则切换回文本格式。
\pset NAME [VALUE]
设置影响查询结果表输出的选项。NAME 的取值见表2-17。
\t [on|off]
切换输出的字段名的信息和行计数脚注。
\T [STRING]
指定在使用HTML 输出格式时放在table 标签里的属性。
如果
参数为空,不设置。
\x [on|off|auto]
切换扩展行格式。
表2-17 可调节的打印选项
选项
选项说明
取值范围
border
value 为数值类型。通常这个数字
越大,表的边界就越宽线就越多,
但是这个取决于特定的格式。
在HTML 格式下,
取值范围为大于0
的整数。
在其他格式下,取值范围:

0:无边框

1:内部分隔线

2:台架
expanded (或x)
在正常和扩展格式之间切换。
当打开扩展格式时,
查询结果用两列
显示,字段名称在左、数据在右。这
个模式在数据无法放进通常的“水
平”模式的屏幕时很有用。
在正常格式下,
当查询输出的格式比
屏幕宽时,
用扩展格式。
正常格式只
对aligned 和wrapped 格式有用。

GBase 8c 工具参考手册
南大通用数据技术股份有限公司
35
选项
选项说明
取值范围
fieldsep
声明域分隔符来实现非对齐输
出。这样就可以创建其他程序希
望的制表符或逗号分隔的输出。
要设置制表符域分隔符,
键入\pset
fieldsep '\t'。缺省域分隔符是'|'
(竖条符)。
——
fieldsep_zero
声明域分隔符来实现非对齐输出
到零字节。
——
footer
用来切换脚注。
——
format
设置输出格式。允许使用唯一缩
写(如u 指代unaligned)。
取值范围:

unaligned:
写一行的所有列在一
条直线上中,
当前活动字段分隔
符分隔。

aligned:此格式是标准的,可读
性最好的文本输出。

wrapped:类似aligned,但是包
装跨行的宽数据值,
使其适应目
标字段的宽度输出。

html:
把表输出为可用于文档里
的对应标记语言。
输出不是完整
的文档。

latex:
把表输出为可用于文档里
的对应标记语言。
输出不是完整
的文档。

troff-ms:把表输出为可用于文
档里的对应标记语言。
输出不是
完整的文档。
null
打印一个字符串,用来代替一个
null 值。
缺省情况下不打印。
numericlocale
切换分隔小数点左边的数值的区
域相关的分组符号。

on:显示指定的分隔符。

off:不显示分隔符。
忽略此参数,显示默认的分隔符。

GBase 8c 工具参考手册
南大通用数据技术股份有限公司
36
选项
选项说明
取值范围
pager
控制查询和gsql 帮助输出的分页
器。
如果设置了环境变量PAGER,
输出将被指向到指定程序,否则
使用系统缺省。

on:
当输出到终端且不适合屏幕
显示时,使用分页器。

off:不使用分页器。

always:当输出到终端无论是否
符合屏幕显示时,都使用分页
器。
recordsep
声明在非对齐输出格式时的记录
分隔符。
——
recordsep_zero
声明在非对齐输出到零字节时的
记录分隔符。
——
tableattr(或T)
声明放在html 输出格式中HTML
table 标签的属性(例如:
cellpadding 或bgcolor)。注意:
这里可能不需要声明border,
因为
已经在\pset border 里用过了。如
果没有给出value,则不设置表的
属性。
——
title
为随后打印的表设置标题。这个
可以用于给输出一个描述性标
签。如果没有给出value,不设置
标题。
——
tuples_only
(或t)
在完全显示和只显示实际的表数
据之间切换。完全显示将输出像
列头、标题、各种脚注等信息。
在tuples_only 模式下,只显示实
际的表数据。
——
feedback
切换是否输出结果行数。
——
表2-18 连接元命令
参数
参数说明
取值范围
\c[onnect]
连接到一个新的数据库(默认数据库为
——

GBase 8c 工具参考手册
南大通用数据技术股份有限公司
37
[DBNAME|- USER|-
HOST|- PORT|-]
postgres)。当数据库名称长度超过63 个字节
时,默认前63 个字节有效,连接到前63 个字
节对应的数据库,
但是gsql 的命令提示符中显
示的数据库对象名仍为截断前的名称。
说明:

重新建立连接时,
如果切换数据库登录用
户,将可能会出现交互式输入,要求输入
新用户的连接密码。该密码最长长度为
999
字节,受限于
GUC
参数
password_max_length 的最大值。
\encoding
[ENCODING]
设置客户端字符编码格式。
不带参数时,显示当
前的编码格式。
\conninfo
输出当前连接的数据库的信息。
——
表2-19 操作系统元命令
参数
参数说明
取值范围
\cd [DIR]
切换当前的工作目录。
绝对路径或相对路径,
且满足
操作系统路径命名规则。
\setenv NAME [VALUE]
设置环境变量NAME 为
VALUE ,如果没有给出
VALUE 值,则不设置环境变
量。
——
\timing [on|off]
以毫秒为单位显示每条SQL
语句的执行时间。

on 表示打开显示。

off 表示关闭显示。
\! [COMMAND]
返回到一个单独的Unix shell
或者执行
Unix
命令
COMMAND。
——
表2-20 变量元命令
参数
参数说明
\prompt [TEXT] NAME
提示用户用文本格式来指定变量名称。
\set [NAME [VALUE]]
设置内部变量NAME 为VALUE。如果给出了多于一个

GBase 8c 工具参考手册
南大通用数据技术股份有限公司
38
值,设置为所有这些值的连接结果。如果没有给出第二
个参数,只设变量不设值。
有一些常用变量被gsql 特殊对待,
它们是一些选项设置,
通常所有特殊对待的变量都是由大写字母组成(可能还
有数字和下划线)。表2-21 是一个所有特殊对待的变量
列表。
\unset NAME
不设置(或删除)gsql 变量名。
表2-21\set 常用命令
名称
命令说明
取值范围
\set VERBOSITY
value
该变量控制错误报告的冗余行。
value 可选值

default

verbose

terse
\set
ON_ERROR_STOP
value
如果设置该变量,脚本处理将马上停止。
如果该脚本是从另外一个脚本调用的,那个
脚本也会按同样的方式停止。
如果最外层的脚本不是从一次交互的gsql 会
话中调用的,而是用-f 选项调用的,gsql 将
返回错误代码3,
以示这个情况与致命错误条
件的区别(错误代码为1)。
value 可选值

on/off

true/false

yes/no

1/0
\set RETRY
[retry_times]
用于控制是否开启语句出错场景下的重试功
能,
参数retry_times 用来指定最大重试次数,
缺省值为5,取值范围为5-10。当重试功能
已经开启时,再次执行\set RETRY 可以关闭
该功能。
使用配置文件retry_errcodes.conf 列举需要重
试的错误码列表,该文件和gsql 可执行程序
位于同一级目录下。
该配置文件为系统配置,
非用户定义,不允许用户直接修改。
当前支持以下出错场景的重试:

YY001:
TCP 通信错误,
Connection reset
by peer
retry_times 取值范围
为:5-10

GBase 8c 工具参考手册
南大通用数据技术股份有限公司
39

YY002:
TCP 通信错误,
Connection reset
by peer

YY003:
锁超时,
Lock wait timeout.../wait
transaction xxx sync time exceed xxx

YY004:
TCP 通信错误,
Connection timed
out

YY005:
SET 命令发送失败,
ERROR SET
query

YY006 :内存申请失败,memory is
temporarily unavailable

YY007:通信库错误,Memory allocate
error

YY008:通信库错误,No data in buffer

YY009 :通信库错误,Close because
release memory

YY010:通信库错误,TCP disconnect

YY011:通信库错误,SCTP disconnect

YY012:通信库错误,Stream closed by
remote

YY013:
通信库错误,
Wait poll unknown
error

YY014,YY015,53200,08006,08000,57P01
,XX003,XX009 等
同时,出错时gsql 会查询数据库节点的连接
状态,当状态异常时会sleep 1 分钟再进行重
试,能够覆盖大部分主备切换场景下的出错
重试。
说明:

不支持事务块中的语句错误重试;

不支持通过ODBC、
JDBC 接口查询的出
错重试;

含有unlogged 表的sql 语句,不支持节
点故障后的出错重试;

gsql 客户端本身出现的错误,不在重跑

GBase 8c 工具参考手册
南大通用数据技术股份有限公司
40
考虑范围之内;
表2-22 大对象元命令
参数
参数说明
\lo_list
显示一个目前存储在该数据库里的所有数据
库大对象和注释。
PATTERN
很多情况下,\d 命令指定PATTERN 参数,来指定要被显示的对象名称。最简单使用方
法,将PATTERN 参数设置为该对象的准确名称。在PATTERN 中的字符通常会被变成小写
形式,与SQL 名称一样,例如\dt FOO 将会显示名为foo 的表。将PATTERN 放在双引号中
可以保持其大小写形式。如果需要在一个PATTERN 中包括一个真正的双引号字符,则需要
把它写成两个相邻的双引号,
这同样是符合SQL 引用标识符的规则。
例如,
\dt "FOO""BAR"
将显示名为FOO"BAR
(不是foo"bar)
的表。
和普通的SQL 名称规则不同,
不能只在PATTERN
的一部分周围放上双引号,例如\dt FOO"FOO"BAR 将会显示名为fooFOObar 的表。
不使用PATTERN 参数时,\d 命令会显示当前schema 搜索路径中可见的全部对象——
这等价于用*作为PATTERN。所谓对象可见是指可以直接用名称引用该对象,而不需要用
schema 来进行限定。要查看数据库中所有的对象而不管它们的可见性,可以把*.*用作
PATTERN。
如果放在一个PATTERN 中,*将匹配任意字符序列(包括空序列),而?会匹配任意的
单个字符(这种记号方法就像Unix shell 的文件名PATTERN 一样)。例如,\dt int*会显示
名称以int 开始的表。但是如果被放在双引号内,*和?就会失去这些特殊含义而变成普通的
字符。
包含一个点号(.)的PATTERN 被解释为一个schema 名称模式后面跟上一个对象名称
模式。例如,\dt foo*.*bar*会显示名称以foo 开始的schema 中所有名称包括bar 的表。如果
没有出现点号,那么模式将只匹配当前schema 搜索路径中可见的对象。同样,双引号内的
点号会失去其特殊含义并且变成普通的字符。
高级用户可以使用字符类等正则表达式记法,
如[0-9]可以匹配任意数字。
所有的正则表

GBase 8c 工具参考手册
南大通用数据技术股份有限公司
41
达式特殊字符都按照POSIX 正则表达式所说的工作。以下字符除外:

. 会按照上面所说的作为一种分隔符。

* 会被翻译成正则表达式记号.*。

? 会被翻译成.。

$ 则按字面意思匹配。
根据需要,
可以通过书写?、
(R+|)、
(R|)和R?来分别模拟PATTERN 字符.、
R*和R?。
$不
需要作为一个正则表达式字符,因为PATTERN 必须匹配整个名称,而不是像正则表达式的
常规用法那样解释
(换句话说,
$会被自动地追加到PATTERN 上)

如果不希望该PATTERN
的匹配位置被固定,可以在开头或者结尾写上*。注意在双引号内,所有的正则表达式特殊
字符会失去其特殊含义并且按照其字面意思进行匹配。
另外,
在操作符名称PATTERN 中
(即
\do 的PATTERN 参数),正则表达式特殊字符也按照字面意思进行匹配。

CLUSTER_LOAD_RESULT
表 5-55 具体信息如下:
TASK_ID
加载ID
DB_NAME
加载数据库名
TB_NAME
加载表名
USER
当前加载用户名
ACCESS_IP
加载发起点IP
HOST_IP
客户端IP
START_TIME
加载开始时间
END_TIME
加载结束时间
ELAPSED_TIME
加载耗时
TOTAL_SIZE
加载文件总大小
AVERAGE_SPEED
加载平均速度
LOADED_RECORDS
加载数据条数
SKIPPED_RECORDS
加载数据跳过条数
IGNORED_FILES
加载跳过的文件数
RESULT
加载结果
SQL_CMD
加载SQL
MESSAGE
错误信息

审计日志用于监视用户所执行的数据库操作,记录的主要内容有:

用户登录方式(CAPI、ODBC、JDBC、ADO)

返回结果集(行数、执行时间)

登录的用户和IP

开始执行时间

执行的sql 语句
$GCLUSTER_BASE/log/gcluster 下audit_log

另外可以使用如下配置方式,设定审计日志存储在系统表中:
全局级变量:
SET GLOBAL log_output = 'table';

示例:使用系统表查看审计日志

GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-04-10)
南大通用数据技术股份有限公司
1340
gbase> SELECT start_time,user_host,query_time,rows,LEFT(sql_text, 30),
conn_type FROM gbase.audit_log;
+---------------------+----------------------------------+
| start_time
| user_host
|
+---------------------+----------------------------------+
| 2013-10-09 17:21:08 | root[root] @ localhost []
|
| 2013-10-09 17:21:22 | root[root] @
[192.168.10.116]
|
| 2013-10-09 17:21:22 | root[root] @ localhost []
|
| 2013-10-09 17:21:32 | gbase[gbase] @
[192.168.10.116] |
| 2013-10-09 17:21:32 | root[root] @ localhost []
|
| 2013-10-09 17:21:32 | root[root] @ localhost []
|
| 2013-10-09 17:21:45 | root[root] @ localhost []
|
| 2013-10-09 17:21:52 | root[root] @ localhost []
|
| 2013-10-09 17:21:58 | root[root] @ localhost []
|
| 2013-10-09 17:22:05 | root[root] @ localhost []
|
| 2013-10-09 17:22:10 | gbase[gbase] @
[192.168.10.116] |
| 2013-10-09 17:22:10 | root[root] @ localhost []
|
| 2013-10-09 17:22:17 | root[root] @ localhost []
|
+---------------------+----------------------------------+
+-----------------+------+-------------------------------+----------+
| query_time
| rows | LEFT(sql_text, 30)
| conn_type|
+-----------------+------+-------------------------------+----------+
| 00:00:00.006397 |
0 | SET GLOBAL log_output = 'table| CAPI
|
| 00:00:00.000282 |
0 | Connect
| CAPI
|
| 00:00:00.025018 |
0 | DROP USER tzt
| CAPI
|
| 00:00:00.000054 |
0 | Connect
| CAPI
|
| 00:00:00.000175 |
0 | DROP DATABASE test
| CAPI
|
| 00:00:00.111946 |
1 | SELECT DATABASE()
| CAPI
|
| 00:00:00.000086 |
0 | CREATE USER tzt identified by | CAPI
|
| 00:00:00.439480 |
0 | GRANT ALL ON *.* TO tzt@'%'
| CAPI
|
| 00:00:00.000387 |
0 | CREATE DATABASE test
| CAPI
|
| 00:00:00.000025 |
0 | USE test
| CAPI
|
| 00:00:00.000384 |
0 | Connect
| CAPI
|
| 00:00:00.000144 |
0 | CREATE TABLE t1(i int)
| CAPI
|
| 00:00:00.004527 |
2 | INSERT INTO t1 VALUES (1),(2) | CAPI
|
+-----------------+------+-------------------------------+----------+
13 rows in set
注:
gccli 连接集群时如果不带h 参数,
默认使用UDS
(unix domain socket)
连接,
不使用IP 和PORT,所以记录审计日志时user_host 和host_ip 中ip 记录为空。

GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-04-10)
南大通用数据技术股份有限公司
1341