金仓数据库麒麟环境SQL终端使用入门实践(增删改查篇)

适用环境:麒麟 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 高度相似,熟悉之后可以平滑迁移。建议将常用命令整理成笔记,多加练习,就能快速上手。

祝您使用顺利!如有疑问,欢迎留言交流。

相关推荐
九零HTTP16 分钟前
10月21号-CSDN配菜-IP池的5个坑
服务器·数据库·tcp/ip
Data-Miner29 分钟前
需要做财务数据分析,有什么好用的工具?从准备到出报告的实操指南
大数据·数据库·数据分析
袋鼠云数栈1 小时前
让 SQL 解析不再重复造轮子:SqlParserX 正式开源
数据库·人工智能·sql·开源·数据治理
这个DBA有点耶1 小时前
期货 CTP 系统 Oracle RAC 迁移国产库实战:读写分离架构设计与性能对标
数据库·架构·dba
数据库安全2 小时前
AI数据访问安全 |如何控制AI访问权限,防止越权
数据库·安全
程序员老赵2 小时前
Docker 部署 Hue:轻松搭建数据库与数据仓库 SQL 查询平台
sql·docker·开源
这个DBA有点耶2 小时前
Redo Log循环写与checkpoint推进:长事务阻塞下的Checkpoint风暴完整链路
数据库·mysql·代码规范
jnrjian3 小时前
pg_waldump --key-file-name status 查看wal 产生的db
数据库
SelectDB技术团队3 小时前
Snowflake 的开源替代怎么选:能力对照、三条部署路径与迁移执行
大数据·数据库·云原生·开源·snowflake·apache doris
Elastic 中国社区官方博客3 小时前
告别繁琐控制台:Kabanos 如何将 MongoDB Compass 的易用性带入 Elasticsearch
大数据·数据库·mongodb·elasticsearch·搜索引擎·全文检索