Install
openclaw skills install @thcjp/sql-genopenclaw skills install @thcjp/sql-gen核心功能: 本技能提供自动化配置和灵活的参数设置等能力。
核心功能: 本技能提供中文交互等能力。
核心功能: 本技能提供器专业版、时使用等能力。
| 能力 | 免费版 | 付费版 |
|---|---|---|
| 基础功能 | 支持 | 支持 |
| SQL生成器(专业版)多表JOIN生成 | 不支持 | 支持 |
| 大数据集流式处理 | 不支持 | 支持 |
| 多数据源关联查询 | 不支持 | 支持 |
| 可视化图表自动生成 | 不支持 | 支持 |
| 定时数据同步与增量更新 | 不支持 | 支持 |
| 能力分类 | 免费版 | 专业版 |
|---|---|---|
| 单次生成上限 | 1条 | 无上限批量生成 |
| Schema感知 | 手动提供 | 自动读取补全 |
| 多表JOIN | 不支持 | 支持复杂关联 |
| 性能优化建议 | 无 | 索引建议+重写提示 |
| 迁移脚本 | 不支持 | up/down自动生成 |
| 版本管理 | 无 | 生成历史+回归测试 |
| 优先支持 | 社区 | 工单优先响应 |
详细的输入输出格式请参考下方章节说明。
生成前自动连接数据库读取表结构,生成时自动补全真实字段名与类型,杜绝幻觉字段.
from sql_gen_tool import ProFeatures
# ...
pro = ProFeatures(db_url="数据库://user:pass@localhost/mydb")
pro.connect_schema() # 自动读取所有表结构
# ...
sql = pro.generate("查询最近30天消费超1000元的用户及其订单明细")
# 自动感知 users、orders 表结构,生成含真实字段名的多表JOIN
支持3表以上复杂关联查询的自动生成,自动选择JOIN类型与连接条件.
输入:查询每个用户的最近3笔订单及对应商品名称,按用户名排序
# ...
输出:
WITH recent_orders AS (
SELECT o.*, ROW_NUMBER() OVER (PARTITION BY user_id ORDER BY created_at DESC) AS rn
FROM orders o
)
SELECT u.name, ro.total, p.product_name, ro.created_at
FROM users u
INNER JOIN recent_orders ro ON ro.user_id = u.id AND ro.rn <= 3
INNER JOIN order_items oi ON oi.order_id = ro.id
INNER JOIN products p ON p.id = oi.product_id
ORDER BY u.name;
生成SQL后自动分析执行计划,给出索引建议与重写提示.
result = pro.generate_with_advice("查询上月销售额Top10商品")
# 返回:SQL + 优化建议
# 建议1:products表缺少(sales, created_at)复合索引,预计提升5倍
# 建议2:子查询可改写为JOIN,减少中间结果集
根据Schema变更需求自动生成up/down双向迁移脚本,支持版本化管理.
pro.generate_migration(
change="为orders表增加shipping_address字段,并创建按状态分组的部分索引",
version="005_add_orders_shipping"
)
# 生成 005_add_orders_shipping_up.sql 和 005_add_orders_shipping_down.sql
批量生成一组业务SQL并纳入版本管理,每次Schema变更后跑回归测试,确保已有SQL不失效.
pro.batch_generate(
prompts_file="business_queries.yaml",
output_dir="generated_sql/"
)
pro.regression_test(baseline_dir="generated_sql/v1.2/")
from sql_gen_tool import ProFeatures
# ...
pro = ProFeatures(db_url="数据库://user:pass@localhost/mydb")
pro.connect_schema() # 自动读取表结构
result = pro.generate_with_advice("查询用户消费排行前10")
print(result.sql)
print(result.advice) # 优化建议
pro.generate_migration(change="为users表增加phone字段", version="006_add_phone")
完整上手时间约120秒.
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| content | string | 否 | 处理的内容输入 |
| mode | string | 否 | 处理模式, 可选值: json/text/markdown |
| style | string | 否 | 输出风格, 参考 references/style.md |
{
"success": true,
"data": {
"result": "处理结果",
"status": "success",
"metadata": {
"metadata": {
"template_used": "reviewer",
"word_count": 0,
"style": "专业"
}
},
"error": null
}
输出模板参考: assets/output.json
| 依赖项 | 类型 | 是否必需 | 获取方式 |
|---|---|---|---|
| LLM API | API | 必需 | 由Agent内置LLM提供 |
| psycopg2 | Python包 | 可选 | pip install psycopg2(数据库驱动) |
| pymysql | Python包 | 可选 | pip install pymysql(MySQL驱动) |
| pyodbc | Python包 | 可选 | pip install pyodbc(SQL Server驱动) |
| sqlparse | Python包 | 可选 | pip install sqlparse(SQL格式化) |
pro.configure(
schema_refresh="on-demand", # 按需刷新Schema
include_views=True, # 包含视图
include_indexes=True, # 包含索引信息
dialect="数据库" # 指定数据库方言
)
pro.batch_config(
prompts_file="queries.yaml", # 自然语言需求清单
output_dir="generated/", # 输出目录
naming="snake_case", # 文件命名规范
include_advice=True, # 附带优化建议
parallel=4 # 并发生成数
)
pro.regression_config(
baseline_dir="generated/v1.0/", # 基线版本
check_syntax=True, # 语法校验
check_plan=True, # 执行计划对比
regression_threshold=0.1 # 性能回归阈值10%
)
A:(1) 检查数据库连接字符串与网络连通性;(2) 确认账号有information_schema读取权限;(3) 对 数据库 需要访问pg_catalog。可降级为手动提供Schema.
A:专业版通过Schema感知获取真实外键关系与字段语义,对有显式外键约束的表JOIN准确率可达95%+;对无外键约束的表需在描述中指明关联字段.
A:会。每个索引都会增加写入开销。专业版优化建议会标注"读写比"评估,对写多读少的表会谨慎推荐索引,建议结合业务负载综合决策.
A:支持 数据库、MySQL、SQL Server、SQLite四类数据库的迁移脚本生成。不同方言的ALTER TABLE语法差异已内置适配.
A:专业版自动为每次批量生成创建版本快照,支持pro.version_diff(v1, v2)对比两个版本的差异,便于追踪变更.
A:通过对比基线与当前版本的执行计划耗时。若某查询耗时增加超过阈值(默认10%),标记为回归。建议在稳定环境运行测试,避免硬件波动干扰.
A:可以,但建议先dry-run。专业版支持pro.generate_and_explain()生成后自动EXPLAIN但不执行,确认计划合理后再真正执行.
A:默认按需刷新(on-demand),也可配置on-change监听数据库变更事件自动刷新,或scheduled定时刷新.
A:不支持自动生成存储过程。存储过程逻辑复杂且方言差异大,专业版聚焦标准SQL生成,存储过程建议人工编写.
A:专业版支持将生成历史与迁移脚本纳入Git管理,团队成员共享同一套基线。批量生成配置文件queries.yaml可作为团队SQL需求清单统一维护.
| 操作步骤 | 手动耗时 | 自动化耗时 | 时间节约 | 准确率提升 |
|---|---|---|---|---|
| Schema感知字段补全 | 1小时/表 | 5分钟/表 | 55分钟/表 | 100% |
| 复杂多表JOIN生成 | 2小时/查询 | 15分钟/查询 | 1.5小时/查询 | 100% |
| 性能优化建议生成 | 1小时/查询 | 5分钟/查询 | 55分钟/查询 | 95% |
| 迁移脚本自动生成 | 2小时/脚本 | 15分钟/脚本 | 1.5小时/脚本 | 100% |
| 批量SQL生成与测试 | 1天/批 | 1小时/批 | 23小时/批 | 98% |
| 对比维度 | 本技能 | 手动操作 | Python脚本 | 专业软件 |
|---|---|---|---|---|
| 生成速度 | 快速 | 慢 | 较快 | 快速 |
| 准确率 | 高 | 低 | 中 | 高 |
| 功能丰富性 | 高 | 低 | 中 | 高 |
| 易用性 | 高 | 低 | 中 | 高 |
| 成本 | 低 | 高 | 中 | 高 |
| 痛点 | 描述 | 影响范围 | 解决方案 | 量化效果 |
|---|---|---|---|---|
| 手动生成SQL效率低 | 需要大量时间手动编写SQL,容易出错 | 影响项目进度和稳定性 | 自动生成SQL,提高效率 | 时间节约达90% |
| 复杂查询难以编写 | 复杂的多表JOIN和性能优化需要大量专业知识 | 影响查询性能和开发效率 | 自动生成复杂查询和优化建议 | 性能提升50% |
| 迁移脚本编写困难 | 数据库迁移需要编写大量脚本,容易出错 | 影响项目稳定性 | 自动生成迁移脚本 | 成功率提升至100% |
| 错误现象 | 可能原因 | 诊断步骤 | 解决方案 |
|---|---|---|---|
| Schema感知失败 | 数据库连接错误或Schema信息错误 | 检查数据库连接和Schema信息 | 修正数据库连接和Schema信息 |
| 自动生成JOIN错误 | 输入参数错误或JOIN逻辑错误 | 检查输入参数和JOIN逻辑 | 修正输入参数和JOIN逻辑 |
| 性能优化建议错误 | SQL执行计划错误或索引缺失 | 检查SQL执行计划和索引 | 修正SQL执行计划和索引 |
| 迁移脚本执行失败 | 脚本语法错误或数据库版本不兼容 | 检查脚本语法和数据库版本 | 修正脚本语法和数据库版本 |
| 批量生成SQL错误 | 输入数据错误或SQL生成逻辑错误 | 检查输入数据和SQL生成逻辑 | 修正输入数据和SQL生成逻辑 |
| 风险项 | 等级 | 防护措施 | 验证方法 |
|---|---|---|---|
| API密钥泄露 | 高 | 通过环境变量配置,禁止硬编码 | 定期检查代码和配置文件 |
| 命令执行风险 | 高 | 仅执行白名单命令,避免拼接用户输入 | 使用沙箱环境测试 |
| 网络通信安全 | 中 | 使用HTTPS协议,验证SSL证书 | 定期检查证书有效期 |
| 敏感数据暴露 | 高 | 输出结果中不包含密钥、令牌等敏感信息 | 日志脱敏审查 |
| 未授权访问 | 中 | 限制访问权限,实施认证机制 | 定期审计访问日志 |
针对"SQL生成器(专业版)"使用中可能遇到的常见问题,提供以下排查方案:
| 错误类型 | 原因分析 | 解决方案 |
|---|---|---|
| API认证失败(401) | API密钥错误或过期 | 检查密钥配置,重新生成token |
| 接口限流(429) | 请求频率超出限制 | 降低调用频率,启用重试退避策略 |
| 响应超时(504) | 网络延迟或服务端负载过高 | 增加超时阈值,检查网络连接 |
| 文件不存在 | 路径错误或文件未创建 | 检查路径拼写,确认文件已生成 |
| 文件格式不支持 | 扩展名不在支持列表中 | 转换为支持的格式后重试 |
| 权限不足 | 当前用户无读写权限 | 检查文件权限,以管理员身份运行 |
| 命令执行失败 | 参数错误或环境依赖缺失 | 检查命令语法,确认依赖已安装 |
| 进程超时 | 命令执行时间过长 | 增加超时设置,优化命令参数 |
| 网络连接失败 | DNS解析失败或防火墙拦截 | 检查网络配置,确认代理设置 |
针对"SQL生成器(专业版)"使用中可能遇到的常见问题,提供以下排查方案:
| 错误类型 | 原因分析 | 解决方案 |
|---|---|---|
| API认证失败(401) | API密钥错误或过期 | 检查密钥配置,重新生成token |
| 接口限流(429) | 请求频率超出限制 | 降低调用频率,启用重试退避策略 |
| 响应超时(504) | 网络延迟或服务端负载过高 | 增加超时阈值,检查网络连接 |
| 文件不存在 | 路径错误或文件未创建 | 检查路径拼写,确认文件已生成 |
| 文件格式不支持 | 扩展名不在支持列表中 | 转换为支持的格式后重试 |
| 权限不足 | 当前用户无读写权限 | 检查文件权限,以管理员身份运行 |
| 命令执行失败 | 参数错误或环境依赖缺失 | 检查命令语法,确认依赖已安装 |
| 进程超时 | 命令执行时间过长 | 增加超时设置,优化命令参数 |
| 网络连接失败 | DNS解析失败或防火墙拦截 | 检查网络配置,确认代理设置 |