• 沒有找到結果。

-\h(\help)

[NAME] 给出指定SQL语句的语法帮助。 如果没有给出NAME,

gsql将列出可获得帮助 的所有命令。如果 NAME是一个星号

(*),则显示所有 SQL语句的语法帮助。

参数 参数说明 取值范围

\parallel [on

[num]|off] 控制并发执行开关。

● on:打开控制并发执行开关,且最大并

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

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

● \parallel中所有作业的持续时间不能超过 session_timeout,否则可能会导致并发执行 连接数受max_connection及 当前已有连接数限 制。

● 设置num时请考虑服 务器当前可接受的实 际连接数合理指定。

\q [value] 退出gsql程序。在一个脚本文件里,只在 脚本终止的时候执行。退出码可由value值

\ef [FUNCNAME [LINE]] 使用外部编辑器编辑函数定义。如果指定了LINE

(即行号),则光标会指到函数体的指定行。

\p 打印当前查询缓冲区到标准输出。

\r 重置(或清空)查询缓冲区。

\w FILE 将当前查询缓冲区输出到文件。

3-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 ] ]

在任何psql客户端登录数据库成功后可以执行

\echo [STRING] 把字符串写到标准输出。

\i FILE 从文件FILE中读取内容,并将其当作输入,执 行查询。

\i+ FILE KEY 执行加密文件中的命令。

\ir FILE 和\i类似,只是相对于存放当前脚本的路径。

\ir+ FILE KEY 和\i+类似,只是相对于存放当前脚本的路径。

\o [FILE] 把所有的查询结果发送到文件里。

\qecho [STRING] 把字符串写到查询结果输出流里。

说明

表3-14中的选项S表示显示系统对象,+表示显示对象附加的描述信息。PATTERN用来指定要被 显示的对象名称。

3-14 显示信息元命令

参数 参数说明 取值范围 示例

\d[S+] 列出当前search_path中模式 下所有的表、视图和序列。

参数 参数说明 取值范围 示例

\d+[PATTER N]

\ddp[PATTER N]

列出所有的Data Source对 象。

参数 参数说明 取值范围 示例

参数 参数说明 取值范围 示例

\dl \lo_list的别名,显示一个大

对象的列表。 - 列出所有的大对

\dp[PATTER N]

列出一列可用的表、视图以 及相关的权限信息。

\dp显示结果如下:

rolename=xxxx/yyyy --赋予一个角色 的权限=xxxx/yyyy --赋予public的权限 N1[PATTER N2]]

参数 参数说明 取值范围 示例

\sf function_a

\sf "func()name"(argtype1, argtype2)

\z[PATTER N]

列出数据库中所有表、视图 和序列,以及它们相关的访 问特权。

如果给出任何 pattern ,则被当 成一个正则表达

3-15 权限的参数说明

参数 参数说明

r SELECT:允许对指定的表、视图读取数据。

w UPDATE:允许对指定表更新字段。

a INSERT:允许对指定表插入数据。

d DELETE:允许删除指定表中的数据。

D TRUNCATE:允许清理指定表中的数据。

x REFERENCES:允许创建外键约束。

t TRIGGER:允许在指定表上创建触发器。

X EXECUTE:允许使用指定的函数,以及利用这些函数实现的 操作符。

U USAGE:

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

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

● 对于序列,允许使用nextval函数。

C CREATE:

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

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

● 对于表空间,允许在其中创建表,以及允许创建数据库 和模式的时候把该表空间指定为其缺省表空间。

c CONNECT:允许用户连接到指定的数据库。

T TEMPORARY:允许创建临时表。

A ANALYZE|ANALYSE:允许分析表。

arwdDxtA ALL PRIVILEGES:一次性给指定用户/角色赋予所有可赋予 的权限。

* 给前面权限的授权选项。

3-16 格式化元命令

参数 参数说明

\a 对齐模式和非对齐模式之间的切换。

\C [STRING] 把正在打印的表的标题设置为一个查询的结果或者取 消这样的设置。

\f [STRING] 对于不对齐的查询输出,显示或者设置域分隔符。

参数 参数说明

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

式。

● 若当前模式为HTML格式,则切换回文本格式。

\pset NAME [VALUE] 设置影响查询结果表输出的选项。NAME的取值见表

3-17。

\t [on|off] 切换输出的字段名的信息和行计数脚注。

\T [STRING] 指定在使用HTML输出格式时放在table标签里的属 性。如果参数为空,不设置。

\x [on|off|auto] 切换扩展行格式。

3-17 可调节的打印选项

选项 选项说明 取值范围

border value必须是一个数字。通常这 个数字越大,表的边界就越宽 expanded (或

x) 在正常和扩展格式之间切换。 ● 当打开扩展格式时,查询结

fieldsep 声明域分隔符来实现非对齐输 出。这样就可以创建其他程序 希望的制表符或逗号分隔的输 出。要设置制表符域分隔符,

键入\pset fieldsep '\t'。缺省域 分隔符是 '|' (竖条符)。

-fieldsep_zero 声明域分隔符来实现非对齐输

出到零字节。

-footer 用来切换脚注。

-选项 选项说明 取值范围 format 设置输出格式。允许使用唯一

缩写(这意味着一个字母就够 了)。

取值范围:

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

● aligned:此格式是标准的,

可读性最好的文本输出。

● wrapped:类似aligned,但 是包装跨行的宽数据值,使

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

null 打印一个字符串,用来代替一

个null值。 缺省是什么都不打印,这样很容

易和空字符串混淆。

numericlocale 切换分隔小数点左边的数值的

区域相关的分组符号。 ● on:显示指定的分隔符。

● off:不显示分隔符。

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

pager 控制查询和gsql帮助输出的分 页器。如果设置了环境变量

● always:当输出到终端无论 是否符合屏幕显示时,都使 用分页器。

recordsep 声明在非对齐输出格式时的记

录分隔符。

-recordsep_zero 声明在非对齐输出到零字节时

的记录分隔符。

-tableattr(或

T) 声明放在html输出格式中 HTML table标签的属性(例 如:cellpadding或bgcolor)。

-选项 选项说明 取值范围 [DBNAME|-USER|- HOST|-PORT|-] GUC参数password max length的最大值。

\setenv NAME

[VALUE] 设置环境变量NAME为VALUE,如果 没有给出VALUE值,则不设置环境变 量。

-\timing [on|off] 以毫秒为单位显示每条SQL语句的执

行时间。 ● on表示打开显示。

● off表示关闭显示。

\! [COMMAND] 返回到一个单独的Unix shell或者执行 Unix命令COMMAND。

-表3-20 变量元命令

参数 参数说明

\prompt [TEXT] NAME 提示用户用文本格式来指定变量名字。

\set [NAME [VALUE]] 设置内部变量NAME为VALUE或者如果给出了多于一个 值,设置为所有这些值的连接结果。如果没有给出第二

\set-multi NAME [VALUE]

\end-multi

设置内部变量NAME为VALUE,VALUE可以由多行字符 串组成。\set-multi使用时,第二个参数必须给出。可 参考表下面的\set-multi元命令使用示例。

说明\set-multi 和\end-multi中出现的元命令会被忽略。

\unset NAME 不设置(或删除)gsql变量名。

\set-multi元命令使用示例 示例文件test.sql:

\set-multi multi_line_var select

id,name from student;

\end-multi

\echo multi_line_var is "${multi_line_var}"

\echo

---\echo result is

${multi_line_var}

gsql -d gaussdb -p 25308 --dynamic-param -f test.sql 执行结果:

multi_line_var is "select id,name

from student; "

---result is

id | name

通过\set-multi \end-multi设置变量multi_line_var为一个SQL语句,并在后面通过动 态变量解析获得这个变量。

示例文件test.sql:

\set-multi multi_line_var select 1 as id;

select 2 as id;

\end-multi

\echo multi_line_var is "${multi_line_var}"

\echo

---\echo result is

${multi_line_var}

gsql -d -p 25308 --dynamic-param -f test.sql 执行结果:

multi_line_var is "select 1 as id;

select 2 as id;"

---result is

id 1(1 row)

id 2(1 row)

通过\set-multi \end-multi设置变量multi_line_var为两个SQL语句,并在后面通过动 态变量解析获得这个变量。因为变量中的内容以“;”结尾,gsql发送SQL语句并获得 打印执行结果。

3-21 \set 常用命令

名称 命令说明 取值范围

\set VERBOSITY

value 这个选项可以设置为值default, verbose,

terse之一以控制错误报告的冗余行。 value取值范 围:default,

verbose,

terse

\setON_ERROR_STO P 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可以关闭该功 能。

● YY001:TCP通信错误,Connection reset by peer(CN和DN间通信)

● YY002:TCP通信错误,Connection reset by peer(DN和DN间通信)

● 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

同时,出错时gsql会查询所有CN/DN的连接状 态,当状态异常时会sleep 1分钟再进行重试,

能够覆盖大部分主备切换场景下的出错重试。

retry_times取 值范围为:

5-10

名称 命令说明 取值范围 说明

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

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

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

4. 当前不支持CN和GTM节点故障时,gsql客户端 的出错重试;

5. gsql客户端本身出现的错误,不在重跑考虑范围 之内;

3-22 大对象元命令

参数 参数说明

\lo_list 显示一个目前存储在该数据库里的所有GaussDB(DWS)大对 象和提供给他们的注释。

3-23 流程控制元命令

参数 参数说明 取值范围

\if EXPR

\elif EXPR

\else

\endif

这组元命令可实现可嵌套的条件块:

● 条件块以\if开始,\endif结束。

● \if和\endif两者之间可以出现任意 数量的\elif子句,或单一的\else子 句。

● \if和\elif命令支持布尔表达式计算 和字符串等值判断。

● \elif不能出现在\else和\endif之 间。 变量COMPARE_STRATEGY 控制(详见表3-2)。默

参数 参数说明 取值范围

\goto LABEL

\label LABEL

这组元命令可实现无条件跳转:

● \label元命令不支持在\if语句块中使 用。

● \goto \label不建议在事务、PL/SQL等 语句块中使用,避免出现不可预期结

● \goto \label不建议在事务、PL/SQL等 语句块中使用,避免出现不可预期结