ksql 是什么
ksql 是人大金仓数据库自带的命令行客户端,使用体验接近 PostgreSQL 的 psql:支持交互式输入 SQL、执行脚本文件、查看对象结构。迁移项目里它承担两类任务,一是把存量 PL/SQL 与视图在目标库上试跑,二是做迁移后的对象与数据对账。
为什么不能照搬 psql 经验
金仓与 PostgreSQL 血缘接近,常用元命令与 SQL 语法可以复用,但扩展语法、系统视图名、参数名与默认端口都是金仓自己的。把 psql 脚本不加验证直接搬到金仓上跑,容易在系统视图查询与权限相关语句上报错,脚本上线前先在测试库过一遍更稳妥。
基本信息
| 所属产品 | 人大金仓数据库(KingbaseES) |
|---|---|
| 程序位置 | 安装目录下的 Server/bin,如 /opt/Kingbase/ES/V8/Server/bin/ksql |
| 默认端口 | 54321,以实际实例配置为准 |
| 元命令 | 反斜杠开头的客户端指令,如列表与查看结构 |
典型使用场景
- 迁移后核对对象数量、表行数与约束是否与源库一致
- 在目标库试跑存量视图与存储过程,提前暴露不兼容语法
- 批量执行核验脚本并把输出归档为验收材料
- 排查应用连接失败时,用客户端确认实例可登录、库名正确
- 交付前清点数据库用户与权限配置
登录与交互
登录与交互
cd /opt/Kingbase/ES/V8/Server/bin
./ksql -U system -p 54321 -d test # 按实际账号、端口、库名登录
# 登录后可用的客户端元命令:
# \l 列出数据库
# \dt 列出表
# \d 表名 查看表结构
# \q 退出脚本化执行
脚本化执行
./ksql -U system -p 54321 -d test -c 'SELECT count(*) FROM t1;' # 单条 SQL
./ksql -U system -p 54321 -d test -f /tmp/check.sql # 执行脚本文件
./ksql -U system -p 54321 -d test -o /tmp/result.log -f /tmp/check.sql # 输出重定向留档对账与结构核查项
| 核查项 | 目的 | 常见差异 |
|---|---|---|
| 表与视图数量 | 确认对象迁移完整 | 迁移工具跳过报错对象 |
| 主键与唯一约束 | 确认业务规则保留 | 源库非标准写法转换失败 |
| 索引 | 确认查询性能可接受 | 大表索引遗漏导致上线后变慢 |
| 序列与自增值 | 确认插入不冲突 | 起始值未同步导致主键冲突 |
| 用户与权限 | 确认应用账号可访问所需对象 | 授权语句需按金仓语法重写 |
psql 的使用经验可以迁移,但金仓的扩展语法与系统视图以官方手册为准;涉及权限、字符集与排序规则的差异,建议在测试库中用真实业务数据验证后再上线。