Install
openclaw skills install @thcjp/sql-query-tool-freeopenclaw skills install @thcjp/sql-query-tool-free本工具为独立开发者、运维与AI Agent提供命令行场景下的SQL查询执行能力。免费版聚焦核心场景:数据库连接、查询编写、执行计划分析、跨数据库语法速查,足以覆盖绝大多数日常数据访问需求。
关系型数据库仍是结构化数据存储的主力方案。无论是本地原型使用的SQLite,还是生产环境常见的 PostgreSQL、MySQL、SQL Server,掌握命令行下的查询、参数化与执行计划解读,是提升数据访问效率与安全性的基础。
本工具不依赖任何ORM框架,通过原生CLI与参数化模式直接与数据库交互,便于在AI Agent工作流、自动化脚本与一次性数据探查场景中快速落地。
| 能力分类 | 说明 |
|---|---|
| 数据库连接 | 支持SQLite、PostgreSQL、MySQL、SQL Server命令行连接 |
| 查询执行 | 参数化查询、事务包裹、批量脚本文件执行 |
| 性能分析 | EXPLAIN执行计划解读、索引陷阱识别、红旗信号清单 |
| 数据导入导出 | CSV导入导出、查询结果格式化输出 |
| 跨数据库速查 | LIMIT、UPSERT、布尔类型、字符串拼接语法差异对照 |
| 安全防护 | 参数化防注入、事务原子性、敏感字段隔离 |
技术实现要点:核心能力基于input_params参数与output_format配置实现,支持创建/查询/修改/删除等操作模式,通过config_options进行运行时配置。 |
用input_params参数进行配置。
输入: 用户提供核心功能执行所需的指令和必要参数。 处理: 解析核心功能执行的输入参数,完成核心逻辑,返回结构化响应。 输出: 返回核心功能执行的响应数据,包含状态码、结果和日志。
input_params参数,支持创建/查询/导出操作用config_options参数进行配置。
输入: 用户提供参数配置与调用所需的指令和必要参数。 处理: 解析参数配置与调用的输入参数,完成核心逻辑,返回结构化响应。 输出: 返回参数配置与调用的响应数据,包含状态码、结果和日志。
config_options参数,支持修改/重置/导入操作用output_format参数进行配置。
输入: 用户提供结果处理与输出所需的指令和必要参数。 处理: 解析结果处理与输出的输入参数,完成核心逻辑,返回结构化响应。 输出: 返回结果处理与输出的响应数据,包含状态码、结果和日志。
output_format参数,支持导出/保存/转换操作
能力覆盖范围:本skill的核心能力覆盖以下场景关键词:面向命令行的、SQL、查询与执行工具、SQLite、PostgreSQL、MySQL、Server、四大数据库的查询、迁移基础能力、面向独立开发者与、Agent、查询执行工具免费、聚焦命令行场景下、的关系型数据库查、参数化执行、执行计划分析与跨、数据库可移植性、提供经过实战检验、的查询模式、索引陷阱清单与、EXPLAIN、解读方法、帮助用户在不依赖、重量级、ORM、的前提下高效完成、数据访问任务、Use、when、需要数据库操作、数据存储管理时使、不适用于数据库架、构设计决策等。在SQLite中快速导入CSV并执行聚合查询,无需部署服务端,适合原型验证与数据分析。
通过EXPLAIN ANALYZE定位慢查询根因,识别Seq Scan、Rows Removed by Filter等红旗信号,针对性补建索引。
借助可移植性对照表,快速评估同一查询在不同数据库间的语法差异,降低迁移成本。
在工作流中以参数化方式安全读写数据库,避免SQL注入风险,同时复用事务保证数据一致性。
# SQLite(零配置,单文件)
sqlite3 mydb.sqlite
# ...
# PostgreSQL
psql -h localhost -U myuser -d mydb
# ...
# MySQL
mysql -h localhost -u root -p mydb
# ...
# SQL Server
sqlcmd -S localhost -U myuser -d mydb
import sqlite3
# ...
conn = sqlite3.connect("mydb.sqlite")
# 安全:使用占位符,绝不拼接用户输入
row = conn.execute("SELECT * FROM users WHERE id = ?", (user_id,)).fetchone()
print(row)
-- PostgreSQL
EXPLAIN (ANALYZE, BUFFERS) SELECT * FROM orders WHERE user_id = 5;
# ...
-- SQLite
EXPLAIN QUERY PLAN SELECT * FROM orders WHERE user_id = 5;
完整上手时间约60秒,无需额外安装依赖。
响应解析: 完成完成后,查看输出响应确认任务状态。成功时输出包含解析摘要和响应数据;失败时根据错误信息排查问题,查阅错误解析章节获取恢复步骤。
| 功能 | PostgreSQL | MySQL | SQLite | SQL Server |
|---|---|---|---|---|
| 分页 | LIMIT n | LIMIT n | LIMIT n | TOP n |
| UPSERT | ON CONFLICT | ON DUPLICATE KEY | ON CONFLICT | MERGE |
| 布尔值 | true/false | 1/0 | 1/0 | 1/0 |
| 字符串拼接 | || | CONCAT() | || | + |
sqlite3 mydb.sqlite "PRAGMA journal_mode=WAL;" # 提升读并发
sqlite3 mydb.sqlite "PRAGMA busy_timeout=5000;" # 写等待5秒
BEGIN;
UPDATE accounts SET balance = balance - 100 WHERE id = 1;
UPDATE accounts SET balance = balance + 100 WHERE id = 2;
COMMIT;
# 错误:字符串拼接,存在注入风险
cursor.execute(f"SELECT * FROM users WHERE id = {user_id}")
# ...
# 正确:占位符参数化
cursor.execute("SELECT * FROM users WHERE id = ?", (user_id,))
WHERE、JOIN ON、ORDER BY中涉及的大表字段必须有索引,否则触发全表扫描。
-- 更快:命中第一条即返回
SELECT * FROM orders o WHERE EXISTS (
SELECT 1 FROM users u WHERE u.id = o.user_id AND u.active
);
WHERE YEAR(date) = 2024 触发全表扫描WHERE varchar_col = 123 跳过索引LIKE '%term' 无法走索引,仅 LIKE 'term%' 可走将多条UPDATE/INSERT放入同一事务,既保证原子性,又可提升10倍以上写入速度。
A:当子查询结果集中包含NULL时,NOT IN会返回空集。应改用NOT EXISTS,它在遇到NULL时行为更可预期。
A:若将右表的过滤条件放在WHERE子句而非ON子句中,LEFT JOIN会退化为INNER JOIN。右表过滤应放在ON子句中,主表过滤放在WHERE中。
A:不一定。小表全表扫描可能比走索引更快。但当大表出现Seq Scan且Rows Removed by Filter很高时,说明索引缺失或选择性差,需补建覆盖索引。
A:COUNT(column)会排除该列为NULL的行,COUNT(*)统计所有行。若需要统计总行数,应使用COUNT(*),且多数数据库对其有专门优化。
A:不能。复合索引遵循最左前缀原则,仅过滤b时索引不生效。若b是高频独立查询字段,应单独为其建索引。
本免费体验版限制以下高级功能:
解锁全部功能请使用专业版:sql-query-tool-pro
| 依赖项 | 类型 | 是否必需 | 获取方式 |
|---|---|---|---|
| sqlite3 | CLI工具 | 必需 | 系统自带或官网下载 |
| psql | CLI工具 | 可选 | PostgreSQL 安装包 |
| mysql | CLI工具 | 可选 | MySQL 客户端安装包 |
| sqlcmd | CLI工具 | 可选 | SQL Server 工具包 |
| Python | 运行时 | 可选 | python.org 官方下载 |
| 错误场景 | 原因 | 处理方式 |
|---|---|---|
| 配置错误 | 参数缺失或格式错误 | 检查依赖说明中的配置要求 |
| 运行时错误 | 运行环境不满足 | 确认运行环境符合依赖说明 |
| 网络错误 | 连接超时或不可达 | 执行ping命令测试网络连通性,检查防火墙和代理设置连接后执行ping命令测试网络连通性,检查防火墙和代理设置连接后重新执行命令,参考国内替代方案 |
{
"success": true,
"data": {
"result": "SQL查询工具(免费版)处理结果",
"execution_time": "0.5s",
"metadata": {
"version": "1.0",
"processor": "sql query"
}
},
"execution_log": ["解析输入参数", "执行核心处理", "格式化输出结果"],
"error": null
}