我做了一个工具,让 AI 生成 SQL 不再靠猜

0 阅读4分钟

为什么会有这个工具

有一段时间,我几乎每天都在做同一件事:

打开 ChatGPT,把表结构粘贴进去,描述我想查什么,等它输出 SQL,复制,切回 Navicat 或 DataGrip,粘贴,执行,报错,截图,切回去,把报错贴给它,等修复……

偶尔运气好,第一次就跑通。更多时候,来回要折腾四五轮。

问题的根源很清楚:AI 不知道我的数据库长什么样。

它给我的 SQL,是基于"一个典型数据库可能有什么表"的猜测,而不是基于我真实的 Schema。

于是我开始做 SQL Copilot。


它和"AI 生成 SQL"工具最大的不同

我见过很多"接入 AI 的数据库工具",它们大多数做的事情是:在查询编辑器旁边加一个输入框,你问,它生成,你复制过去执行。

SQL Copilot 想做的不是这个。

它想做的是:从你问出问题,到你看到结果,中间不需要你做任何搬运工作。

1. AI 先读懂你的库,再回答你

SQL Copilot 内置了一套 RAG(检索增强生成)流程。每次你提问之前,系统会自动检索:

  • Schema 信息:当前连接的所有表、字段、数据类型、索引、外键
  • 字段说明:如果你给字段加过业务备注,AI 会读到
  • 历史样例 SQL:你之前执行过的查询,或你手动保存到知识库的 SQL
  • 自定义术语:你在知识库里定义的业务术语和缩写对照
  • 多轮会话记忆:当前对话的上下文,以及历史会话的向量摘要

这些信息会一起作为上下文发给 AI,而不是只传你现在这一句话。

结果就是:AI 生成的 SQL 字段名是对的,表名是存在的,JOIN 条件是合理的。不是百分之百,但准确率比纯靠猜高得多。

而且随着你用的时间越长,知识库里积累的样例 SQL 越多,它就越懂你的业务。

2. 生成 → 执行 → 结果,全在一个界面

这是我最想解决的那个"来回复制粘贴"问题。

AI 生成 SQL 之后,你可以直接在对话界面点"执行",结果表格就在下面出来了。你可以接着追问:"只取前 20 条"、"改一下排序"、"加个时间筛选",AI 会基于刚才那条 SQL 继续修改,修改完你可以再执行。

整个过程不需要切窗口,不需要复制粘贴,不需要重新解释上下文。

3. 执行前有人替你把关

数据库误操作的后果很难受,尤其是在生产环境。

SQL Copilot 在执行任何 SQL 之前,会先跑一遍风险评估:

  • 检测到 DELETE FROM table_name(没有 WHERE 条件)→ 拦截
  • 检测到 UPDATE ... SET ...(没有 WHERE 条件)→ 拦截
  • 检测到生产环境连接下的写操作 → 二次确认
  • 检测到全表 TRUNCATE → 明确提示

不是不让你执行,而是在你可能手滑的时候提醒你一下。

4. 想看图表,不用导出到 Excel

"帮我统计一下每个月的新增用户数,按月份画个折线图。"

SQL Copilot 会生成对应的聚合 SQL,执行之后直接渲染图表,折线图、柱状图、饼图都支持。图片可以导出,数据可以导出 CSV。

不需要 Python,不需要 Excel,不需要 Tableau。就在工作台里。

5. 接手陌生项目?先看 ER 图

接手别人的遗留系统是很多人的噩梦,几十张表,不知道谁关联谁,文档早就过时了。

SQL Copilot 的智能 ER 图功能:选中几张你感兴趣的表,生成关系图。外键关系会显示实线,AI 推断的隐式关联(比如 user_id 字段存在于多张表)会显示虚线。可以保存快照,下次打开继续分析。

6. 数据完全在你本地

这一点我觉得很重要,尤其对于连接生产数据库的场景。

SQL Copilot 所有的数据(连接配置、查询历史、Schema 快照、知识库内容)都存储在本地 SQLite,不会上传到任何服务器。

AI 模型是你自己接的:支持 OpenAI API、Azure OpenAI、以及任何兼容 OpenAI 接口的本地模型或第三方服务。应用本身不记录你问了什么,也不会把你的 SQL 发给我。


当前支持

数据库连接方式
MySQL直连 / SSH 隧道
PostgreSQL直连 / SSH 隧道
SQL Server直连 / SSH 隧道
Oracle直连 / SSH 隧道
SQLite本地文件

支持多连接管理、只读模式、多环境标识(开发 / 测试 / 生产)。


开源 & 免费

SQL Copilot 完全开源,MIT 协议,永久免费。

如果你用过之后觉得有什么地方不对劲,或者有功能想法,欢迎开 Issue 或者直接发邮件,我都会认真看的。


如果觉得这个工具对你有用,帮忙点个 Star ⭐ 是对我最大的支持。