所谓元命令就是在gsql里输入的任何以不带引号的反斜杠开头的命令。本课程通过实际使用gsql实践,介绍GaussDB数据库gsql所提供的元命令。
本课程仅展示基础的元命令使用。
一、操作步骤
步骤1 使用gsql连接到GaussDB实例。
gsql工具使用-d参数指定目标数据库名、-U参数指定数据库用户名、-h参数指定主机名、-p参数指定端口号信息。
若未指定数据库名称,则使用初始化时默认生成的数据库名称;若未指定数据库用户名,则默认使用当前操作系统用户作为数据库用户名;当某个值没有前面的参数(-d、-U等)时,若连接的命令中没有指定数据库名(-d)则该参数会被解释成数据库名;如果已经指定数据库名(-d)而没有指定数据库用户名(-U)时,该参数则会被解释成数据库用户名。
示例,使用root用户连接到远程主机postgres数据库的8000端口。
gsql -h 10.180.123.163 -d postgres -U root -p 8000复制
步骤2 使用元命令查看所有的数据库。
l
回显如下:
Name | Owner | Encoding | Collate | Ctype | Access privileges
-----------+----------+----------+---------+-------+-----------------------
postgres | rdsAdmin | UTF8 | C | C |
template0 | rdsAdmin | UTF8 | C | C | =c/rdsAdmin +
| | | | | rdsAdmin=CTc/rdsAdmin
template1 | rdsAdmin | UTF8 | C | C | =c/rdsAdmin +
| | | | | rdsAdmin=CTc/rdsAdmin
(3 rows)
复制
可以看到,新创建的实例默认存在postgres库和两个模板数据库。
步骤3 使用元命令,查看或设置客户端字符编码格式。
encoding
UTF8复制
使用encoding ENCODING,在元命令后指定对应的字符集类型即可设置客户端字符编码格式。
步骤4 使用元命令查看实例的所有角色。
du
回显如下:
Role name | Attributes |
Member of
-----------+------------------------------------------------------------------------------------------------------------------+--------------------------------
-------------------------------------------------------------------------
rdsAdmin | Sysadmin, Create role, Create DB, Replication, Administer audit, Monitoradmin, Operatoradmin, Policyadmin, UseFT | {}
rdsBackup | Operatoradmin, Persistence | {}
rdsMetric | Monitoradmin, Persistence | {}
rdsRepl | Replication, Persistence | {}
root | Create role, Create DB, Monitoradmin | {gs_role_copy_files,gs_role_sig
nal_backend,gs_role_tablespace,gs_role_replication,gs_role_account_lock}
复制
可以看到当前数据库的所有角色,以及角色所拥有的所有权限。
也可以使用如下方法模糊查找指定角色。
du ro?t
Role name | Attributes | Membe o
-----------+--------------------------------------+---------------------------------------------------------------------------------------------------------
root | Create role, Create DB, Monitoradmin | {gs_role_copy_files,gs_role_signal_backend,gs_role_tablespace,gs_role_replication,gs_role_account_lock} 复制
步骤5 使用元命令,查看当前连接的数据库的信息。
conninfo
You are connected to database "postgres" as user "root" on host "10.xxx.xxx.xxx" at port "8000".复制
步骤6 创建一个新的库,并使用元命令快速切换至新的数据库。
执行如下语句,创建新的数据库。
CREATE DATABASE db_tpcds;
执行如下元命令,快速切换至新库。
c db_tpcds
输入密码,成功切换至新库。
Password for user root:
SSL connection (cipher: ECDHE-RSA-AES128-GCM-SHA256, bits: 128)
You are now connected to database "db_tpcds" as user "root".
db_tpcds=>复制
步骤7 执行元命令,退出数据库。
q
二、更多元命令参考
接下来介绍使用GaussDB数据库命令行交互工具登录数据库后,gsql所提供的元命令。
1、注意事项
- 一个gsql元命令的格式是反斜杠后面紧跟一个动词,然后是任意参数。参数命令动词和其他参数以任意个空白字符间隔。
- 要在参数里面包含空白,必须用单引号把它引起来。要在这样的参数里包含单引号,可以在前面加一个反斜杠。任何包含在单引号里的内容都会被进一步进行类似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、元命令
元命令的详细说明请参见表1、表2、表3、表4。
表4、表5、表6、表7、表8详情请见此处。
三、总结
GaussDB是华为公司倾力打造的自研企业级分布式关系型数据库,该产品支持优异的分布式事务,同城跨AZ部署,数据0丢失,支持1000+扩展能力,PB级海量存储等企业级数据库特性。拥有云上高可用,高可靠,高安全,弹性伸缩,一键部署,快速备份恢复,监控告警等关键能力,能为企业提供功能全面,稳定可靠,扩展性强,性能优越的企业级数据库服务。
欢迎小伙伴们交流,一起学习数据库相关知识。