适用环境:麒麟 V10 + 金仓数据库 KingbaseES V8
目标:通过
ksql终端完成数据库的增、删、改、查基本操作
前言
很多初次接触金仓数据库的朋友,在麒麟操作系统上常常卡在"怎么连接""怎么执行SQL"这些基础步骤上。本文基于真实项目中的操作记录,整理了一套完整的入门实践,从防火墙放行 、用户切换 ,到连接数据库 ,再到增删改查,逐一手把手演示。所有命令均已在实际环境中验证,放心跟着做即可。
1. 环境准备(防火墙 & 用户)
1.1. 放行数据库端口
金仓数据库默认端口为 54321,如果服务器开启了防火墙,需要先放行该端口:
bash
sudo firewall-cmd --permanent --add-port=54321/tcp
sudo firewall-cmd --reload
sudo firewall-cmd --list-ports # 确认已生效
1.2. 切换到数据库管理员用户
金仓的 ksql 客户端命令通常只对 kingbase 用户或 root 用户可用,但 推荐切换到 kingbase 用户进行操作:
bash
sudo -i # 切换至 root
su - kingbase # 再切换至 kingbase 专属用户
⚠️ 注意 :若直接在普通用户下执行
ksql,可能报错command not found,因为环境变量未加载。
2. 连接数据库(ksql 登录)
2.1. 基本连接语法
bash
ksql -h <主机IP> -p <端口> -U <用户名> -d <数据库名>
例如,使用 ahxny 用户连接 ahxny 数据库:
bash
ksql -h 10.235.58.128 -p 54321 -U ahxny -d ahxny
2.2. 本地免密登录(已切换至 kingbase 用户)
如果只在本机操作,且当前用户为 kingbase,可以直接简写:
bash
ksql -U system -p 54321 # 使用 system 用户
ksql -U ahxny -p 54321 # 使用普通业务用户
若省略 -d,默认连接到与用户名同名的数据库(如 ahxny 默认连接 ahxny 库)。
2.3. 测试连通性
在连接之前,可以用 telnet 测试端口是否可达:
bash
telnet 10.235.58.128 54321
3. 数据库与表的基本查看
登录成功后,会进入 ksql 交互界面,提示符为 数据库名=> 或 数据库名=#。
3.1. 查看所有数据库
sql
\l
输出示例(节选):
Name | Owner | Encoding
---------------------------------+--------+----------
ahxny | ahxny | UTF8
tianyuan_multistation_dazhong | ahxny | UTF8
...
3.2. 切换数据库
sql
\c 数据库名
例如:
sql
\c tianyuan_multistation_dazhong
3.3. 查看当前数据库的所有表
sql
\dt
3.4. 查看表结构
sql
\d 表名
例如:
sql
\d sys_estimateelectricity
4. 增删改查(CRUD)实战
接下来,我们以 forecast_pvarray 表为例,演示完整的增删改查操作。
4.1. 查询(SELECT)
- 查询全部数据:
sql
SELECT * FROM forecast_pvarray;
- 条件查询:
sql
SELECT id, pdc0, pvsys FROM forecast_pvarray WHERE pvsys = 2;
- 统计行数:
sql
SELECT COUNT(*) FROM forecast_pvarray;
4.2. 插入(INSERT)
日志未直接给出插入示例,但这里补充标准语法
sql
INSERT INTO forecast_pvarray (id, creatorid, createtime, deleted, pdc0, gamma_pdc, temp_ref, surface_tilt, surface_azimuth, pvsys, enterpriseid)
VALUES ('4', 'Amin', now(), 'f', 60000, -0.0034, 25.0, 2.06, 180.0, 3, '32a6060f');
💡 提示:
now()函数获取当前时间戳。
4.3. 更新(UPDATE)
根据日志,我们将所有记录的 enterpriseid 更新为指定的企业ID:
sql
UPDATE forecast_pvarray
SET enterpriseid = '32a6060f';
也可以带条件更新:
sql
UPDATE forecast_pvarray
SET pdc0 = 50000
WHERE id = '1';
更新后再次查询验证:
sql
SELECT * FROM forecast_pvarray;
4.4. 删除(DELETE)
删除表中所有数据(谨慎操作):
sql
DELETE FROM sys_weathergrid24hours;
删除后立即查看行数,确认已清空:
sql
SELECT COUNT(*) FROM sys_weathergrid24hours; -- 返回 0
若只删除部分数据,加上 WHERE 条件:
sql
DELETE FROM forecast_pvarray WHERE pvsys = 3;
5. 提交事务(COMMIT)
金仓默认是自动提交模式(每条SQL执行后自动提交),但如果显式开启了事务,需要手动提交。
若出现 WARNING: there is no transaction in progress,则表示当前没有事务,无需提交。
sql
COMMIT;
6. 常见错误与避坑指南
错误1:ksql: command not found
原因 :未切换到 kingbase 用户,或环境变量未设置。
解决 :执行 su - kingbase 切换到金仓专用用户。
错误2:在 ksql 提示符下又输入 ksql ...
示例:
ahxny=> ksql -U tianyuan -p 54321
原因 :已经把 ksql 当成了 SQL 语句执行。
解决 :ksql 是外部命令 ,只能在操作系统 shell 中执行;进入 ksql 交互界面后,只能输入 SQL 或元命令(以 \ 开头)。
错误3:表名或字段名大小写问题
金仓(基于 PostgreSQL)默认对未加双引号的对象名会转为小写。若建表时使用了双引号保留了大写,则查询时也必须加双引号。建议统一使用小写命名。
7. 扩展小技巧
7.1. 查看当前连接信息
sql
\conninfo
7.2. 修改用户密码(管理员操作)
sql
ALTER USER ahxny ENCRYPTED PASSWORD '新密码';
7.3. 创建数据库(管理员操作)
sql
CREATE DATABASE tianyuan_base_dazhong;
7.4. 给表添加注释(便于维护)
sql
COMMENT ON COLUMN forecast_pvarray.enterpriseid IS '企业Id';
8. 总结
通过本文,您已经掌握了在麒麟环境下使用金仓数据库 ksql 终端进行基本操作的完整流程:
- ✅ 防火墙配置与用户切换
- ✅ 多种方式的连接登录
- ✅ 查看数据库、表结构
- ✅ SELECT、INSERT、UPDATE、DELETE 增删改查
- ✅ 常见错误处理
金仓数据库的 ksql 与 PostgreSQL 的 psql 高度相似,熟悉之后可以平滑迁移。建议将常用命令整理成笔记,多加练习,就能快速上手。
祝您使用顺利!如有疑问,欢迎留言交流。