Install
openclaw skills install @thcjp/sql-gen-tool-freeopenclaw skills install @thcjp/sql-gen-tool-free本工具为独立开发者、产品经理与AI Agent提供自然语言到SQL的转换能力。免费版聚焦核心场景:查询生成、SQL解释、建表DDL、测试数据生成,足以覆盖绝大多数日常SQL编写需求。
并非所有需要操作数据库的用户都精通SQL语法。产品经理想快速查看某个业务指标、运营人员想导出特定条件的用户列表、测试同学想造一批符合约束的测试数据——这些场景下,用自然语言描述需求并自动生成SQL,能显著降低数据库使用门槛。
本工具基于LLM的语义理解能力,结合内置的SQL语法规则库与Schema感知机制,将自然语言需求转换为可执行的SQL语句,同时保证生成的SQL符合参数化安全规范。
| 能力分类 | 说明 |
|---|---|
| 自然语言转SQL | 支持查询、插入、更新、删除四类语句生成 |
| SQL解释 | 将复杂SQL翻译为中文步骤说明 |
| 建表DDL生成 | 根据业务描述生成含约束的CREATE TABLE |
| 测试数据生成 | 按表结构生成符合类型与约束的模拟数据 |
| SQL速查表 | 内置SELECT/JOIN/聚合/窗口函数速查 |
| 语法校验 | 生成后自动校验语法正确性 |
技术实现要点:核心能力基于input_params参数与output_format配置实现,支持创建/查询/修改/删除等操作模式,通过config_options进行运行时配置。 |
用input_params参数进行配置。
输入: 用户提供核心功能执行所需的指令和必要参数。 处理: 解析核心功能执行的输入参数,完成核心逻辑,返回结构化响应。 输出: 返回核心功能执行的响应数据,包含状态码、结果和日志。
input_params参数,支持创建/查询/导出操作用config_options参数进行配置。
输入: 用户提供参数配置与调用所需的指令和必要参数。 处理: 解析参数配置与调用的输入参数,完成核心逻辑,返回结构化响应。 输出: 返回参数配置与调用的响应数据,包含状态码、结果和日志。
config_options参数,支持修改/重置/导入操作用output_format参数进行配置。
输入: 用户提供结果处理与输出所需的指令和必要参数。 处理: 解析结果处理与输出的输入参数,完成核心逻辑,返回结构化响应。 输出: 返回结果处理与输出的响应数据,包含状态码、结果和日志。
output_format参数,支持导出/保存/转换操作
能力覆盖范围:本skill的核心能力覆盖以下场景关键词:的生成器免费版、支持查询生成、建表语句、测试数据生成等核、心场景、面向独立开发者与、Agent、生成器免费版、通过自然语言描述、快速生成、查询语句、同时提供、速查表等核心能力、帮助不熟悉、语法的用户也能高、效完成数据库操作、Use、when、需要数据库操作、数据存储管理时使、不适用于数据库架、构设计决策等。这些关键词对应description中声明的使用场景,均已在上述能力点中提供对应的操作支持。用自然语言描述"查询最近7天注册且未下单的用户",自动生成对应的SELECT语句。
描述业务实体"一个订单表,包含用户、金额、状态、创建时间",自动生成含主键、外键、约束的CREATE TABLE。
为已有表结构批量生成符合字段类型、唯一约束、外键引用的测试数据,无需手写INSERT。
接手他人代码时,将复杂的多层嵌套SQL翻译为分步中文说明,快速理解查询逻辑。
在工作流中由Agent根据用户意图自动生成SQL,经校验后执行,实现数据访问的自动化。
输入:查询最近7天注册但从未下单的用户,按注册时间倒序
# ...
输出:
SELECT u.id, u.name, u.email, u.created_at
FROM users u
WHERE u.created_at >= CURRENT_DATE - INTERVAL '7 days'
AND NOT EXISTS (
SELECT 1 FROM orders o WHERE o.user_id = u.id
)
ORDER BY u.created_at DESC;
输入:创建订单表,包含用户ID、订单金额(不能为负)、状态(待支付/已支付/已发货/已取消)、创建时间
# ...
输出:
CREATE TABLE orders (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
user_id BIGINT NOT NULL,
total DECIMAL(10,2) NOT NULL CHECK(total >= 0),
status VARCHAR(20) NOT NULL DEFAULT 'pending'
CHECK(status IN ('pending','paid','shipped','cancelled')),
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
);
输入:为users表生成100条测试数据
# ...
输出:
INSERT INTO users (name, email, created_at) VALUES
('张三', 'zhangsan@example.com', '2026-07-01 10:30:00'),
('李四', 'lisi@example.com', '2026-07-02 14:20:00'),
-- ... 共100条
完整上手时间约60秒。
| 自然语言 | SQL片段 |
|---|---|
| 最近N天 | WHERE date >= CURRENT_DATE - INTERVAL 'N days' |
| 从未/没有 | NOT EXISTS (subquery) |
| 按XX分组统计 | GROUP BY xx + COUNT/SUM/AVG |
| 前N名 | ORDER BY xx DESC LIMIT N |
| 去重计数 | COUNT(DISTINCT column) |
| 同比/环比 | 窗口函数 LAG() OVER(...) |
-- 基础查询
SELECT col1, col2 FROM table WHERE condition;
# ...
-- 聚合
SELECT status, COUNT(*) FROM orders GROUP BY status HAVING COUNT(*) > 10;
# ...
-- JOIN
SELECT u.name, o.total FROM users u INNER JOIN orders o ON o.user_id = u.id;
# ...
-- 窗口函数
SELECT date, revenue, SUM(revenue) OVER (ORDER BY date) AS cumulative FROM daily_sales;
生成质量取决于描述清晰度。"查询高价值用户"不如"查询最近30天消费总额超过1000元的用户"精确。
LLM生成的SQL可能存在方言差异或边界遗漏,执行前务必用EXPLAIN或dry-run校验语法。
生成的测试数据若包含姓名、邮箱等字段,应使用明显虚假值(如example.com域名),避免与真实数据混淆。
对多层嵌套的复杂查询,建议先用自然语言拆分为子步骤,分别生成CTE,再组合为最终SQL。
提供表结构信息能显著提升生成准确率。建议生成前先执行SHOW CREATE TABLE获取Schema。
A:生成时未提供Schema上下文。建议先描述表结构或执行SHOW CREATE TABLE,让生成器感知真实字段名与类型。
A:对结构化描述(含明确字段、条件、排序)准确率可达90%+;对模糊描述(如"有趣的数据")准确率下降,需补充字段语义。
A:生成器会自动为UNIQUE字段添加序号后缀(如user_001、user_002)。若仍冲突,检查表结构是否有过严的约束。
A:支持3层以内的子查询嵌套解释。更深层嵌套建议先拆分为CTE再分别解释,可读性更好。
A:默认生成标准SQL。若指定数据库类型(如 PostgreSQL、MySQL),会自动适配方言差异(如LIMIT vs TOP、UPSERT语法)。
本免费体验版限制以下高级功能:
解锁全部功能请使用专业版:sql-gen-tool-pro
| 依赖项 | 类型 | 是否必需 | 获取方式 |
|---|---|---|---|
| LLM API | API | 必需 | 由Agent内置LLM提供 |
| sqlite3 | CLI工具 | 可选 | 系统自带或官网下载 |
| psql | CLI工具 | 可选 | PostgreSQL 安装包 |
| Python | 运行时 | 可选 | python.org 官方下载 |
| 错误场景 | 原因 | 处理方式 |
|---|---|---|
| 配置错误 | 参数缺失或格式错误 | 检查依赖说明中的配置要求 |
| 运行时错误 | 运行环境不满足 | 确认运行环境符合依赖说明 |
| 网络错误 | 连接超时或不可达 | 执行ping命令测试网络连通性,检查防火墙和代理设置连接后执行ping命令测试网络连通性,检查防火墙和代理设置连接后重新执行命令,参考国内替代方案 |