ksql概述
ksql是Kingbase 的交互式客户端工具。提供交互式查询,通过文件输入或者命令行输入,得到查询结果。此外,Ksql 还提供一些元命令和多种类似 shell 的特性来为编写脚本和自动化多种任务提供便利。
ksql常用命令
1、连接数据库(远程连接)
ksql -h 数据库主机ip地址 -U system -d kingbase
执行过程如下:
[kingbase@node1 ~]$ ksql -h 192.*.*.10 -U system -d kingbase
用户 system 的口令:
输入 "help" 来获取帮助信息.
kingbase=#
2、连接数据库(本地快速连接)
当前用户的环境变量.bashrc中设置:
export KINGBASE_DATABASE=kingbase
export KINGBASE_HOST=192.*.*.10
export KINGBASE_PORT=54321
export KINGBASE_USER=system
export KINGBASE_PASSWORD=******
执行过程如下:
vi .bashrc加入:
export KINGBASE_DATABASE=kingbase
export KINGBASE_HOST=192.*.*.10
export KINGBASE_PORT=54321
export KINGBASE_USER=system
export KINGBASE_PASSWORD=******
[kingbase@node1 ~]$ source .bashrc
[kingbase@node1 ~]$ ksql
输入 "help" 来获取帮助信息.
kingbase=#
3、查看连接信息
\conninfo
执行过程如下:
kingbase=# \conninfo
以用户 "system" 的身份, 在主机"192.*.*.10", 端口"54321"连接到数据库 "kingbase"
4、执行数据库命令(然后退出)
-c "sql语句或者元命令"
执行过程如下:
[kingbase@node1 ~]$ ksql -h 192.*.*.10 -U system -d kingbase -c "select sysdate from dual"
用户 system 的口令:
sysdate
---------------------
2024-11-23 21:22:02
(1 行记录)
[kingbase@node1 ~]$
[kingbase@node1 ~]$ ksql -h 192.*.*.10 -U system -d kingbase -c "\conninfo"
用户 system 的口令:
以用户 "system" 的身份, 在主机"192.*.*.10", 端口"54321"连接到数据库 "kingbase"
5、查看数据库版本
select version();
或者
ksql -V
执行过程如下:
kingbase=# select version();
version
----------------------------------------------------------------------------------------------------------------------
KingbaseES V009R001C002B0014 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-28), 64-bit
(1 行记录)
kingbase=# \q
[kingbase@node1 ~]$ ksql -V
ksql (Kingbase) V009R001C002B0014
[kingbase@node1 ~]$
6、 执行文件中的命令(然后退出)
-f filename
执行过程如下:
[kingbase@node1 ~]$ cat a.sql
select sysdate;
select version();
[kingbase@node1 ~]$ ksql -h 192.*.*.10 -U system -d kingbase -f a.sql
用户 system 的口令:
sysdate
---------------------
2024-11-23 21:33:51
(1 行记录)
version
----------------------------------------------------------------------------------------------------------------------
KingbaseES V009R001C002B0014 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-28), 64-bit
(1 行记录)
[kingbase@node1 ~]$
7、将执行结果发送到文件或者是管道
\g [FILE] or [|COMMAND]
执行过程如下:
kingbase=# select sysdate;
sysdate
---------------------
2024-11-23 21:10:52
(1 行记录)
kingbase=# \g a.txt
kingbase=# \q
[kingbase@node1 ~]$ cat a.txt
sysdate
---------------------
2024-11-23 21:10:57
(1 行记录)
8、查看数据库列表
\l
执行过程如下:
kingbase=# \l
数据库列表
名称 | 拥有者 | 字元编码 | 校对规则 | Ctype | 存取权限
-----------+--------+----------+-------------+-------------+-------------------
kingbase | system | UTF8 | zh_CN.UTF-8 | zh_CN.UTF-8 |
security | system | UTF8 | zh_CN.UTF-8 | zh_CN.UTF-8 |
template0 | system | UTF8 | zh_CN.UTF-8 | zh_CN.UTF-8 | =c/system +
| | | | | system=CTc/system
template1 | system | UTF8 | zh_CN.UTF-8 | zh_CN.UTF-8 | =c/system +
| | | | | system=CTc/system
test | system | UTF8 | zh_CN.UTF-8 | zh_CN.UTF-8 |
(5 行记录)
9、查看对象列表
\d
执行过程如下:
kingbase=# \d
关联列表
架构模式 | 名称 | 类型 | 拥有者
----------+-------------------------+--------+--------
public | sys_stat_statements | 视图 | system
public | sys_stat_statements_all | 视图 | system
public | testtab | 数据表 | system
(3 行记录)
kingbase=#
10、退出ksql客户端
\q
执行过程如下:
kingbase=# \q
您在 /var/spool/mail/kingbase 中有新邮件
[kingbase@node1 ~]$
11、查看帮助
ksql --help
执行过程如下:
[kingbase@node1 ~]$ ksql --help
ksql是Kingbase 的交互式客户端工具。
使用方法:
ksql [选项]... [数据库名称 [用户名称]]
通用选项:
-B 用户登录时提供验证码功能
-c, --command=命令 执行单一命令(SQL或内部指令)然后结束
-d, --dbname=DBNAME 指定要连接的数据库 (默认:"kingbase")
-f, --file=文件名 从文件中执行命令然后退出
-l, --list 列出所有可用的数据库,然后退出
-v, --set=, --variable=NAME=VALUE
设置ksql变量NAME为VALUE
(例如,-v ON_ERROR_STOP=1)
-V,--version 输出版本信息,然后退出
-X, --no-ksqlrc 不读取启动文档(~/.ksqlrc)
-1 ("one"), --single-transaction
作为一个单一事务来执行命令文件(如果是非交互型的)
-?, --help[=options] 显示此帮助,然后退出
--help=commands 列出反斜线命令,然后退出
--help=variables 列出特殊变量,然后退出
输入和输出选项:
-a, --echo-all 显示所有来自于脚本的输入
-b, --echo-errors 回显失败的命令
-e, --echo-queries 显示发送给服务器的命令
-E, --echo-hidden 显示内部命令产生的查询
-L, --log-file=文件名 将会话日志写入文件
-M, --enable-client-encryption
启用使用客户端加密功能
-n, --no-readline 禁用增强命令行编辑功能(readline)
-o,--outPut=FILENAME 将查询结果发送到file(or |pipe)
-q,--quiet 静静地运行(没有消息,只有查询输出)
-s, --single-step 单步模式 (确认每个查询)
-S, --single-line 单行模式 (一行就是一条 SQL 命令)
输出格式选项 :
-A,--no-align 不对齐表输出模式
--csv CSV(逗号分隔值)表输出模式
-F, --field-separator=STRING
用于未对齐输出的字段分隔符(默认值:"|")
-H,--html HTML表输出模式
-P, --pset=变量[=参数] 设置将变量打印到参数的选项(查阅 \pset 命令)
-R, --record-separator=STRING
记录分隔符用于未对齐输出(默认:newline)
-t, --tuples-only 只打印记录i
-T, --table-attr=文本 设定 HTML 表格标记属性(例如,宽度,边界)
-x,--expanded 打开扩展表outPut
-z, --field-separator-zero
将未对齐输出的字段分隔符设置为零字节
-0, --record-separator-zero
将未对齐输出的记录分隔符设置为零字节
联接选项:
-h, --host=主机名 数据库服务器主机或socket目录(默认:"本地接口")
-p, --port=端口 数据库服务器的端口(默认:"54321")
-U,--username=USERNAME 数据库用户名(默认:"kingbase")
-w, --no-password 永远不提示输入口令
-W, --password 强制口令提示 (自动)
-C,--client-cert-path cert-authentication文件路径
-k,--client-certkey-path 证书认证私钥文件路径
-K, --client-certpin-path 读取私钥文件的加密pin码文件路径
更多信息,请在ksql中输入 "\?"(用于内部命令),
或者参考Kingbase ES文档中的ksql章节。
12、查看ksql元命令
\?
执行过程如下:
kingbase=# \?
一般性
\crosstabview [COLUMNS] 执行查询并且以交叉表显示结果
\errverbose 以最冗长的形式显示最近的错误消息
\g [FILE] or [|COMMAND] 将执行结果发送到文件或者是管道
\gdesc 描述查询结果,而不执行它
\gexec 执行策略,然后执行其结果中的每个值
\gset [PREFIX] 执行查询并把结果存到ksql变量中
\gx[FILE] as \g, 但强制扩展输出模式
\q 退出 ksql
\watch [SEC] 每隔SEC秒执行一次查询
帮助
\? [commands] 显示反斜线命令的帮助
\? options 显示 ksql 命令行选项的帮助
\? variables 显示特殊变量的帮助
查询缓存区
\e [FILE] [LINE] 使用外部编辑器编辑查询缓存区(或文件)
\ef [FUNCNAME [LINE]] 使用外部编辑器编辑函数定义
\ev [VIEWNAME [LINE]] 用外部编辑器编辑视图定义
\p 显示查询缓存区的内容
\r 重置(清除)查询缓存区
\s [FILE] 显示历史记录或将历史记录保存在文件中
\w FILE 将查询缓存区的内容写入文件
输入/输出
\copy ... 执行 SQL COPY,将数据流发送到客户端主机
\echo [STRING] 将字符串写入标准输出
\i FILE 从文件中执行命令
\ir FILE 与 \i类似, 但是相对于当前脚本的位置
\o [FILE] 将全部查询结果写入文件或 |管道
\qecho [STRING] 写入字符串以查询输出流(see \o)
条件
\if EXPRESSION 条件语句开始块
\elif EXPRESSION else if 语句块
\else 当前条件块内的最终备选方案
\endif 条件块的结尾
资讯性
(选项: S = 显示系统对象, + = 其余的详细信息)
\d[S+] 列出表,视图和序列
\d[S+] NAME 描述表,视图,序列,或索引
\da[S] [PATTERN] 列出聚合函数
\dA[+] [PATTERN] 列出访问方法
\db[+] [PATTERN] 列出表空间
\dc[S+] [PATTERN] 列表转换
\dC[+] [PATTERN] 列出类型强制转换
\dd[S] [PATTERN] 显示没有在别处显示的对象描述
\dD[S+] [PATTERN] 列出共同值域
\ddp [PATTERN] 列出默认权限
\dE[S+] [PATTERN] 列出引用表
\det[+] [PATTERN] 列出引用表
\des[+] [PATTERN] 列出外部服务器
\deu[+] [PATTERN] 列出用户映射
\dew[+] [PATTERN] 列出外部数据封装器
\df[anptw][S+] [PATRN] 列出[只包括 聚合/常规/程序/触发器/窗口]函数
\dF[+] [PATTERN] 列出文本搜索配置
\dFd[+] [PATTERN] 列出文本搜索字典
\dFp[+] [PATTERN] 列出文本搜索解析器
\dFt[+] [PATTERN] 列出文本搜索模版
\dg[S+] [PATTERN] 列出角色
\di[S+] [PATTERN] 列出索引
\dl 列出大对象, 功能与\lo_list相同
\dL[S+] [PATTERN] 列出所有过程语言
\dm[S+] [PATTERN] 列出所有物化视图
\dn[S+] [PATTERN] 列出所有模式
\do[S+] [PATTERN] 列出运算符
\dO[S+] [PATTERN] 列出所有校对规则
\dp [PATTERN] 列出表,视图和序列的访问权限
\dpkg[S+] [PATTERN] 列出包
\dP[itn+] [PATTERN] 列出 [仅索引/表] 分区关系 [n=嵌套]
\drds [PATRN1 [PATRN2]] 列出每个数据库的角色设置
\dRp[+] [PATTERN] 列出复制发布
\dRs[+] [PATTERN] 列出复制订阅
\ds[S+] [PATTERN] 列出序列
\dt[S+] [PATTERN] 列出表
\dT[S+] [PATTERN] 列出数据类型
\du[S+] [PATTERN] 列出角色
\dv[S+] [PATTERN] 列出视图
\dx[+] [PATTERN] 列出扩展
\dy [PATTERN] 列出所有事件触发器
\l[+] [PATTERN] 列出所有数据库
\sf[+] FUNCNAME 显示一个函数的定义
\sv[+] VIEWNAME 显示一个视图的定义
\z [PATTERN] 和\dp的功能相同
格式化
\a 在未对齐和对齐输出模式之间的切换
\C [STRING] 设置表的标题,或如果没有的标题就取消
\f [STRING] 显示或设置未对齐查询的字段分隔符
\H 切换HTML输出模式(当前关闭)
\pset [NAME [VALUE]] set table outPut option
(border|columns|csv_fieldsep|expanded|fieldsep|
fieldsep_zero|footer|format|linestyle|null|
numericlocale|pager|pager_min_lines|recordsep|
recordsep_zero|tableattr|title|tuples_only|
unicode_border_linestyle|unicode_column_linestyle|
unicode_header_linestyle)
\t [on|off] 只显示记录 (目前是关闭)
\T [STRING] 设置HTML <表格>标签属性, 或者如果没有的话取消设置
\x [on|off|auto] 切换扩展输出(当前关闭)
连接
\c[onnect] {[DBNAME|- USER|- HOST|- PORT|-] | conninfo}
连接到新数据库(当前是"kingbase")
\conninfo 显示当前连接的相关信息
\encoding [ENCODING] 显示或设定客户端编码
\password [USERNAME] 安全地为用户更改口令
操作系统
\cd [DIR] 更改目前的工作目录
\setenv NAME [VALUE] 设置或清空环境变量
\timing [on|off] 切换命令计时开关 (目前是关闭)
\! [COMMAND] 在 shell中执行命令或启动一个交互式shell
变量
\prompt [TEXT] NAME 提示用户设定内部变量
\set [NAME [VALUE]] 设定内部变量,若无参数则列出全部变量
\unset NAME 清空(删除)内部变量
大对象
\lo_export LOBOID FILE 导出指定LOBIOD的大对象到文件
\lo_import FILE [COMMENT] 从文件FILE导入大对象,并且可以添加注释
\lo_list 列出所有的大对象
\lo_unlink LOBOID 移除指定LOBOID的大对象
kingbase=#
总结
本文只列出了ksql命令的部分用法,其实ksql是一个强大的数据库管理工具,通过不断学习和实践,可以更有效地利用它来管理和操作数据库。
最后修改时间:2024-11-25 09:43:50
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




