• 金仓数据库KingbaseES ksql工具用户指南及参考--2. Ksql快速启动


    目录

    2.1. Ksql概述

    2.1.1. Ksql命令行架构

    2.2. Ksql先决条件

    2.3. 启动Ksql命令行

    2.4. 连接目标数据库

    2.5. 执行一个查询

    2.6. 退出Ksql


    2.1. Ksql概述

    Ksql是KingbaseES基于终端的前端。提供交互式查询,通过文件输入或者命令行输入,得到查询结果。此外,Ksql还提供一些元命令和多种类似shell 的特性来为编写脚本和自动化多种任务提供便利。

    2.1.1. Ksql命令行架构

    Ksql命令行使用了一个两层模型,其中包括:

    • 客户端(用户命令行接口)

    • 数据库(KingbaseES数据库)

    Ksql 客户端

    命令行用户界面基于字符终端实现。

    KingbaseES数据库

    KingbaseES数据库使用基于消息的协议在Ksql客户端和后端之间通信,协议支持TCP/IP和Unix套接字。

    2.2. Ksql先决条件

    Ksql是KingbaseES数据库的一个组件,在安装KingbaseES数据库时,默认会安装Ksql。

    在运行Ksql之前还需要做什么呢?

    • 安装KingbaseES数据库或Ksql客户端;

    • 获取目标数据库的名称、主机名和服务器的端口号以及用户名;

    • 确保连接的数据库已启动;

    2.3. 启动Ksql命令行

    Ksql是一个常规KingbaseES客户端应用。为了连接到数据库,你需要知道你的目标数据库的名称、主机名和该服务器的端口号,以及用于连接数据库的用户名。可以通过命令行选项告知Ksql这些参数,分别是-d-h-p以及-U 。如果发现一个参数不属于任何选项,它将被解释为数据库名称(如果已经给出数据库名称,就解释为用户名)。这些选项并非都是必须的,它们都有可用的默认值。如果省略主机名,Ksql将连接到本地主机上的服务器,或通过TCP/IP连接到主机上的localhost。默认端口号则在编译时决定。由于数据库服务器使用相同的默认值,大多数情况下你将不必指定端口。默认的用户名和数据库名与操作系统用户名相同。

    当默认值不是很符合实际时,可以把环境变量KINGBASE_DATABASE 、KINGBASE_HOST 、KINGBASE_PORT 以及KINGBASE_USER 设置为适当的值。用一个~/.kbpass 文件来避免定期输入密码也很方便。

    另一种指定连接参数的方法是用一个``conninfo``* 字符串或者一个URI,它可以被用来替代数据库名。这种机制可以让我们对连接具有很广的控制权。例如:

    $ ksql "service=myservice sslmode=require"
    $ ksql kingbase://dbmaster:5433/mydb?sslmode=require
    

    如果由于任何原因(例如权限不足、服务器没有在目标主机上运行等)导致连接无法建立,Ksql将返回一个错误并且终止。

    如果标准输入和标准输出都是一个终端,那么Ksql会把客户端编码设置成“auto”,这会使Ksql从区域设置(Linux系统上的 LC_CTYPE 环境变量)中检测合适的客户端编码。如果这样不起作用,可以使用环境变量KINGBASE_CLIENTENCODING覆盖客户端编码。

    2.4. 连接目标数据库

    在Linux或者Windows终端输入Ksql命令:

    $ ksql -p 54320 -d test
    ksql (V8.0)
    Type "help" for help.
    

    2.5. 执行一个查询

    在正常操作时,Ksql会提供一个提示符,该提示符是Ksql当前连接到的数据库名称后面跟上字符串=#。例如:

    $ ksql testdb
    ksql (V8.0)
    Type "help" for help.
    
    testdb=#
    

    在提示符下,用户可以键入SQL命令。正常情况下,当碰到一个表示命令终结的分号时,输入的行会被发送给服务器。一行的结束并不表示命令的完结。因此,为了清晰,可以把命令散布在多个行上。如果命令被发送并且执行而不产生错误,该命令的结果将会显示在屏幕上。例如:

    test=# select a, b from t1;
     a | b
    ---+---
     1 | 2
     3 | 4
    (2 rows)
    

    如果不受信任的用户能够访问没有采用 安全使用模式 的数据库,通过从search_path删除公共可写的模式来开始会话。可以在连接字符串加入options=-csearch_path=或者在其他SQL命令之前发出SELECT sys_catalog.set_config('search_path', '', false)。这种考虑并非专门针对Ksql,它适用于每一种执行任意SQL命令的接口。

    只要执行命令,Ksql还会测试 LISTEN 和 NOTIFY 产生的异步通知。

    C 风格的注释块会被传给服务器处理并且移除,Ksql会自己移除掉 SQL 标准的注释。

    2.6. 退出Ksql

    如果需要退出Ksql命令行,输入 \q 即可,Ksql正常完成,它会向 shell 返回 0。如果它自身发生一个致命错误(例如内存用完、找不到文件),它会返回 1。如果到服务器的连接出问题并且事务不是交互式的,它会返回 2。如果在脚本中发生错误,它会返回 3 并且变量ON_ERROR_STOP会被设置。

  • 相关阅读:
    精选20个大模型高频面试题
    代码重构:面向单元测试
    代码大全阅读随笔(六)
    基于JAVA企业公开招聘系统计算机毕业设计源码+系统+mysql数据库+lw文档+部署
    函数调用栈
    SQL注入漏洞 | bool型
    基于Python的图像加密算法实现
    基于java的学生信息管理系统
    lora训练之偷师
    【Python 实战基础】Pandas如何给股票数据新增年份和月份
  • 原文地址:https://blog.csdn.net/arthemis_14/article/details/126406689