Sql Buddy

将自然语言转换为SQL,安全执行查询并获取优化建议。

已扫描
适合谁
数据分析师、后端开发人员、需要快速查询数据库的产品经理
不适合谁
对SQL无概念且不愿学习基础操作的用户、需要直接操作生产数据库执行写操作的用户
国内可用性
需网络配置。可能需要网络配置或第三方服务可访问。
安装难度
新手友好(★☆☆)。基于终端操作、依赖、API Key 和本地环境要求的初步判断。

安装与下载

openclaw skills install @harrylabsj/sql-buddy

Skill 说明

命令、参数、文件名以原文为准

Skill: Sql Buddy

Version: 1.0.0

Chunk: 1/1

SQL Buddy 技能

将自然语言问题转换为 SQL 查询、探索数据库模式、安全执行查询,并获得优化建议。支持 SQLite、PostgreSQL、MySQL 和 SQL Server。

核心能力

  • 自然语言 → SQL:将中文/英文描述转换为正确的 SQL
  • 模式探索:自动发现表、列、类型和关系
  • 安全执行:默认只读;DDL/DML 需要显式 --allow-write
  • 查询优化:EXPLAIN 计划分析、索引建议、性能警告
  • 结果洞察:AI 对查询结果的解释(趋势、异常)
  • 多方言:SQLite / PostgreSQL / MySQL / MSSQL(⚠ MSSQL 驱动为存根 — 需要 pymssql)

安全与隐私

  • 默认 readonly: true — 所有非 SELECT 语句将被拦截
  • 密码永不写入日志或历史记录
  • 连接配置本地存储在 ~/.openclaw/data/sql-buddy/connections.json
  • LLM 仅接收表名、列名和类型,绝不接收实际行数据
  • 敏感列名(password_hash, secret, token)在模式上下文中被屏蔽
  • 所有用户 SQL 参数均使用参数化查询(预编译语句)

使用方式

clawhub run sql-buddy --query "<自然语言>" --connection <连接字符串> [选项]

选项

选项类型默认值描述
--query字符串必填自然语言查询(2-2000 字符)
--connection字符串sqlite://./temp.db连接字符串或 JSON 配置
--execute布尔值false执行生成的 SQL
--explain布尔值true显示 EXPLAIN 计划
--suggest-indexes布尔值true建议索引
--limit-rows整数20最大显示行数
--output-format枚举tabletable, json, csv, markdown
--show-schema布尔值false首先显示数据库模式
--direct-sql字符串跳过自然语言→SQL,直接分析/优化给定 SQL
--allow-write布尔值false允许执行 INSERT/UPDATE/DELETE
--language枚举zh-CNzh-CN, en-US

连接格式

sqlite:///path/to/database.db
postgresql://user:pass@host:5432/dbname
mysql://user:pass@host:3306/dbname
mssql://user:pass@host:1433/dbname

或使用环境变量:DATABASE_URL / DB_PASSWORD

示例提示

1. 简单聚合查询(零配置 SQLite)

clawhub run sql-buddy --query "最近7天注册了多少用户" \
  --connection sqlite://./app.db --execute
# → 生成的 SQL:SELECT COUNT(*) as new_users FROM users WHERE created_at >= DATE('now', '-7 days')
# → 结果:847 位新用户

2. 复杂 JOIN 查询

clawhub run sql-buddy --query "每个品类上个月的销售额,按金额从高到低排序,同时显示商品数量" \
  --connection postgresql://localhost:5432/shop --execute
# → 多表 JOIN,包含 GROUP BY、ORDER BY、窗口函数

3. SQL 优化分析

clawhub run sql-buddy --direct-sql "SELECT * FROM orders JOIN users ON orders.user_id = users.id WHERE users.status = 'active'" \
  --explain --suggest-indexes
# → 全表扫描警告、索引建议、优化后的 SQL 重写

4. 模式探索

clawhub run sql-buddy --connection postgresql://localhost:5432/shop --show-schema
# → 所有表及其列、类型、主键、外键和注释提示

5. 包含结果洞察的账务分析

clawhub run sql-buddy --query "本月各区域销售额对比" \
  --connection postgresql://localhost:5432/shop --execute
# → SQL + 结果 + AI 洞察:“华东区销售额环比下降15%,建议关注…”

首次成功路径

步骤 1:安装 → clawhub install sql-buddy
步骤 2:连接 SQLite → clawhub run sql-buddy --query "有哪些表" --connection sqlite://./test.db
步骤 3:查看模式 → 自动生成
步骤 4:查询 → clawhub run sql-buddy --query "每种状态有多少用户" --connection sqlite://./test.db --execute
步骤 5:查看聚合结果 → “原来不用写SQL也能查数据!”

核心脚本

文件用途
scripts/__init__.py包初始化
scripts/nl_parser.py自然语言 → 查询意图提取
scripts/schema_explorer.py模式发现(表、列、外键)
scripts/sql_generator.py带少样本提示的 AI SQL 生成
scripts/sql_validator.py语法验证 + 方言适配
scripts/optimizer.py执行计划分析 + 索引建议
scripts/executor.py安全查询执行器(默认只读)
scripts/connection_manager.py连接池 + 凭据管理
scripts/result_formatter.py将结果格式化为表格 / JSON / CSV
scripts/insight_generator.pyAI 结果解释
scripts/security.py密码掩码、SQL 注入防护
scripts/drivers/每种方言的驱动适配器
H
@harrylabsj

已收录 3 个 Skill

相关推荐