1. chat2DB简介
1-1. 简介
chat2DB是一款有开源免费的多数据库客户端工具,支持windows、mac本地安装,也支持服务器端部署,web网页访问。和传统的数据库客户端软件Navicat、DBeaver 相比Chat2DB集成了AIGC的能力,能够将自然语言转换为SQL,也可以将SQL转换为自然语言,可以给出研发人员SQL的优化建议,极大的提升人员的效率,是AI时代数据库研发人员的利器,未来即使不懂SQL的运营业务也可以使用快速查询业务数据、生成报表能力。是一种智能且多功能的通用SQL客户端和报告工具,该工具与ChatGPT的功能集成在一起。
SQL(Structured Query Language)是一种用于管理和操作关系型数据库的编程语言。这个工具是一个SQL客户端,意味着它允许用户与数据库进行交互,在数据库上执行查询操作和其他操作。
此外,这个工具还具备ChatGPT的功能,即集成了ChatGPT的技术。ChatGPT是OpenAI开发的一种自然语言处理模型,它能够生成自然语言回复并进行对话。因此,这个工具提供了与用户进行自然语言对话的能力。
综上所述,这个SQL客户端和报告工具不仅具备执行数据库查询和操作的功能,还能够通过对话与用户进行交互。这使得用户可以使用自然语言提出问题或要求,并得到对应的回复和结果。
我的个人心得为在之前1.X版本时代,有不少bug是使用问题,但2.0版本发布后,使用感受明显得到了很大提升,其次chat2DB以及同类应用的出现,也代表着在未来的发展中,只要你能简洁准确的描述出SQL的业务需求,则即可反馈出你想要的sql语句和结果,意味着例如广大的产品经理、市场人员也一样可以渗透到数据分析开发人员的领域,实现更多的业务交集。
项目官方地址:https://github.com/chat2db/Chat2DB
1-2. chat2DB常用数据库支持类型
从官方项目介绍来看,目前常用的DB基本都已经支持
在后续,很快将会开放Hbase、Elasticsearch、openGauss、TiDB、InfluxDB等连接功能
1-3. 特点
- 🌈 AI智能助手,支持自然语言转SQL、SQL转自然语言、SQL优化建议
- 🔥 SQL查询、AI查询和数据报表完美集成的一体化解决方案设计与实现
- 👭 支持团队协作,研发无需知道线上数据库密码,解决企业数据库账号安全问题
- ⚙️ 强大的数据管理能力,支持数据表、视图、存储过程、函数、触发器、索引、序列、用户、角色、授权等管理
- 🔌 强大的扩展能力,目前已经支持MySQL、PostgreSQL、Oracle、SQLServer、ClickHouse、OceanBase、H2、SQLite等等,未来会支持更多的数据库
- 🛡 前端使用 Electron 开发,提供 Windows、Mac、Linux 客户端、网页版本一体化的解决方案
- 🎁 支持环境隔离、线上、日常数据权限分离
2. 下载安装
2-1. 官方最新版下载地址
Description | Download |
---|---|
Windows | https://oss-chat2db.alibaba.com/release/2.0.1/Chat2DB%20Setup%202.0.1.exe |
MacOS ARM64 | https://oss-chat2db.alibaba.com/release/2.0.1/Chat2DB-2.0.1-arm64.dmg |
MacOS X64 | https://oss-chat2db.alibaba.com/release/2.0.1/Chat2DB-2.0.1.dmg |
Jar包 | https://oss-chat2db.alibaba.com/release/2.0.1/chat2db-server-start.jar |
3. Windows版使用介绍
下载安装包Chat2DB Setup 2.0.1.exe后,直接安装即可,界面非常简洁清晰
3-1. 创建数据源
例如添加一个MySQL数据库数据源,点击MySQL即可
将连接信息填写,点击Test,测试通过,点击保存Save
注意: hosts可以直接输入IP地址,这里我做了本地的hosts解析
3-2.数据源管理操作
在数据库Connections中,可以看到已经添加的数据库实例清单,双击对应实例,即可进入到对应数据源管理界面
- 操作管理界面
3-3. AI智能助手配置添加
使用前需要配置OpenAI的Api Key及本地代理配置
方式1:使用ChatGPT
方式1比较适合经常使用原生官方chat,有一定经验的老司机人员,否则建议跳过直接使用下面的方式2
- 1、需要有一个openAI的key:OPENAI_API_KEY
- 2、客户端网络可以连接到官网,国内需要科学上网。注意:如果本地VPN未能全局生效,可以通过在客户端中设置网络代理HOST和PORT来保证网络连通性
查看key:OPENAI_API_KEY方式:
信息配置:
- Api Key 必填,需要输入自己查询到自己的Key
- Api Host 选填,默认值为 https://api.openai.com
- HTTP Proxy 一般代理都是在本地电脑启动 我这里是127.0.0.1
- HTTP Proxy Prot 我的梯子代理端口为 1080 这里根据自己情况而定
方式1的好处是没有使用次数限制,缺点是网络上需要自己去实现打通
方式2:使用阿里提供的一个统一代理服务
- 1、不需要openAI的key
- 2、不需要代理,不需要VPN只要可以联网即可使用
官方为了方便大家更快速的使用AI的能力,可以关注微信公众号,回复"AI" 获得我们的自定义API_KEY,申请完成之后参考下图进行配置即可进行使用
- 公众号信息
方式2的好处是网络上没有任何限制,直接拿到Api Key配置即可使用,方便快捷,缺点为有使用次数,每日使用25次
3-4. AI使用方式介绍
配置完毕后,使用方式将改变成只需要描写需求即可
0. 实验素材准备
表1:game_gold
-- 表1建表语句
CREATE TABLE `game_gold` (
`NAME` varchar(20) DEFAULT NULL COMMENT '游戏角色',
`gold` int(11) DEFAULT NULL COMMENT '游戏金币',
`play_role_id` int(11) DEFAULT NULL COMMENT '角色id'
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- 样例数据
INSERT INTO `game_gold` VALUES ('player01', 2200, 1);
INSERT INTO `game_gold` VALUES ('player02', 1800, 7);
INSERT INTO `game_gold` VALUES ('player01', 2200, 6);
INSERT INTO `game_gold` VALUES ('player02', 1800, 9);
-- 表2建表语句
CREATE TABLE `wow_info` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '角色id',
`role` varchar(255) DEFAULT NULL COMMENT '角色简称',
`role_cn` varchar(255) DEFAULT NULL COMMENT '角色类型',
`role_pinyin` varchar(255) DEFAULT NULL COMMENT '角色拼音',
`zhuangbei` varchar(255) DEFAULT NULL COMMENT '装备类型',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=12 DEFAULT CHARSET=utf8;
-- 样例数据
INSERT INTO `wow_info` VALUES (1, 'fs', '法师', 'fashi', '布甲');
INSERT INTO `wow_info` VALUES (2, 'ms', '牧师', 'mushi', '布甲');
INSERT INTO `wow_info` VALUES (3, 'ss', '术士', 'shushi', '布甲');
INSERT INTO `wow_info` VALUES (4, 'dz', '盗贼', 'daozei', '皮甲');
INSERT INTO `wow_info` VALUES (5, 'ws', '武僧', 'wuseng', '皮甲');
INSERT INTO `wow_info` VALUES (6, 'xd', '德鲁伊', 'xiaode', '皮甲');
INSERT INTO `wow_info` VALUES (7, 'sq', '圣骑士', 'shengqi', '板甲');
INSERT INTO `wow_info` VALUES (8, 'zs', '战士', 'zhanshi', '板甲');
INSERT INTO `wow_info` VALUES (9, 'dk', '死亡骑士', 'siwangqishi', '板甲');
INSERT INTO `wow_info` VALUES (10, 'dh', '恶魔猎手', 'emolieshou', '皮甲');
两张表关系:
示例1:统计表wow_info的数据量
作为一个SQL开发人员,查询一张表数据量,会使用SQL语句
但作为销售或者不懂SQL的岗位,如今只需要在需求描述区域输入例如:查看wow_info表一共有多少条信息
即可获取到一样的结果
示例2:返回表wow_info一条样例数据
从示例2可以看到,需求描述可以多个条件结合
例如:附上SQL注释,返回一条wow_info的样例数据
示例3:通过表game_gold中字段play_role_id匹配表wow_info,查看player01玩了哪些角色类型
多表查询可以实现需求
需求:通过表game_gold中字段play_role_id匹配表wow_info,查看player01玩了哪些角色类型
如果实际使用场景中,你对反馈的结果不是很满意,可以补充条件来修正反馈的SQL,例如这个示例通过子查询来实现,但此时想用join来实现需求
需求:通过表game_gold中字段play_role_id匹配表wow_info,查看player01玩了哪些角色类型,,要求使用join实现
3-5.chat2DB-Dashboard使用介绍
chat2DB除可以AI智能SQL分析,还可以协助自动生成报表
例如,wow_info表中,字段:zhuangbei,代表装备类型,有布甲、皮甲、板甲等等
现在想去分析一下每种类型的占比情况
在Charts栏中可以选择不同的指标,实现不同维度的数据
例如目前纵坐标代表不同装备类型的总数count,可以在yAxis中改成percentage比例,则可以看到对应比例为30%|30%|40%