📦 SQL Splitter — sql-splitter — SQL文件拆分工具
v1.1.0拆分 SQL 文件为独立文件(存储过程、函数、视图、触发器、表结构、索引、约束)
0· 22·0 当前·0 累计
安全扫描
OpenClaw
可疑
medium confidence该技能实现了一个功能完整的 SQL 文件拆分工具,没有明显的额外凭证或安装需求。但由于提供的源文件在审查输入中被截断,我无法完全验证是否存在隐藏的网络/子进程/数据泄露行为。
评估建议
包含的文件和 SKILL.md 看起来是一个连贯的 SQL 拆分工具,没有声明的凭证或安装程序——这点很好。然而,提供给我的源文件被截断,因此我无法完全审计整个脚本。在安装或运行此技能之前,请完整审查 scripts/split_sql.py 文件,检查是否存在:网络相关导入或调用(requests、urllib、socket、http)、subprocess/exec/eval 使用、读取无关系统文件或环境变量的代码、或在预期输出目录之外写入(通过未清理的文件名进行路径遍历)。同时检查是否存在尝试将文件 POST/PUT 到远程端点或嵌入密钥的行为。作为预防措施:(1) 首先在备份或非敏感的示例 SQL 文件上运行,(2) 在受限用户或沙箱下运行,(3) 如果愿意,提供完整的 scripts/split_sql.py 内容,以便我重新检查网络/子进程/泄露模式并提高置信度。...详细分析 ▾
✓ 用途与能力
名称、描述、SKILL.md 和 scripts/split_sql.py 的可见部分保持一致:该工具使用正则表达式解析 SQL 并写入每个对象的 .sql 文件。不需要无关的凭证、二进制文件或配置路径。
✓ 指令范围
SKILL.md 的指令范围很窄:针对输入文件/目录运行包含的 Python 脚本并将输出写入指定目录。它不指导读取无关的系统文件或向外部服务发送数据。
✓ 安装机制
没有安装规范——只有指令加上包含的 Python 脚本。这是最低风险的安装模式;评估期间不会下载或安装任何内容。
✓ 凭证需求
该技能不请求环境变量、凭证或配置路径。这对于本地文件处理工具来说是相称的。
✓ 持久化与权限
always 为 false,该技能不声明修改其他技能或系统范围的配置。运行脚本将在所选输出目录下写入输出文件(预期行为)。
安全有层次,运行前请审查代码。
运行时依赖
无特殊依赖
版本
latestv1.1.02026/4/15
sql-splitter v1.1.0 - 新增索引支持:CREATE INDEX, CREATE UNIQUE INDEX - 新增约束支持:ALTER TABLE ADD CONSTRAINT - 现已支持所有六种方言中的索引与约束识别 - 兼容 SQL Server 的 CLUSTERED/NONCLUSTERED 选项 - 支持 Oracle/达梦的 BITMAP 索引
● 无害
安装命令
点击复制官方npx clawhub@latest install sql-splitter
镜像加速npx clawhub@latest install sql-splitter --registry https://cn.longxiaskill.com
技能文档
将包含多个 SQL 对象的单一文件或目录拆分为独立的 .sql 文件。
支持的 SQL 方言
- MySQL
- PostgreSQL
- Oracle
- SQL Server
- 达梦 (DM)
- 通用 (Generic)
支持的 SQL 对象类型
| 类型 | 前缀 | 说明 |
|---|---|---|
| 存储过程 | proc_ | CREATE PROCEDURE |
| 函数 | func_ | CREATE FUNCTION |
| 视图 | view_ | CREATE VIEW |
| 触发器 | trig_ | CREATE TRIGGER |
| 表结构 | table_ | CREATE TABLE |
| 包 | pkg_ | CREATE PACKAGE |
| 索引 | idx_ | CREATE INDEX |
| 唯一索引 | uidx_ | CREATE UNIQUE INDEX |
| 约束 | con_ | ALTER TABLE ADD CONSTRAINT |
| 序列 | seq_ | CREATE SEQUENCE |
| 同义词 | syn_ | CREATE SYNONYM (Oracle) |
| 事件 | evt_ | CREATE EVENT (MySQL) |
| 物化视图 | mv_ | CREATE MATERIALIZED VIEW (PostgreSQL) |
| 类型 | type_ | CREATE TYPE |
使用方法
单文件拆分
python3 ~/.openclaw/skills/sql-splitter/scripts/split_sql.py [output_dir]
批量拆分(目录)
python3 ~/.openclaw/skills/sql-splitter/scripts/split_sql.py --batch <目录路径> [输出目录]
批量拆分(多个文件)
python3 ~/.openclaw/skills/sql-splitter/scripts/split_sql.py --batch "file1.sql,file2.sql,file3.sql" [输出目录]
指定方言
python3 ~/.openclaw/skills/sql-splitter/scripts/split_sql.py --dialect oracle input.sql
支持的方言:mysql, postgresql, oracle, sqlserver, dm, generic
参数说明
| 参数 | 说明 |
|---|---|
input.sql | 要拆分的 SQL 文件路径(单文件模式必需) |
--batch | 批量模式标志 |
--dialect | 指定 SQL 方言 |
-q, --quiet | 静默模式 |
output_dir | 输出目录(可选,默认:原文件名_split) |
输出示例
假设输入文件 myapp.sql 包含:
- 存储过程
usp_GetUsers - 函数
fn_CalculateTotal - 视图
vw_OrderSummary - 索引
idx_users_name
输出:
myapp_split/
├── proc_usp_GetUsers.sql
├── func_fn_CalculateTotal.sql
├── view_vw_OrderSummary.sql
└── idx_idx_users_name.sql
注意事项
- 使用正则表达式识别 SQL 对象,可能对复杂嵌套语法有局限
- 默认 UTF-8 编码
- 建议先备份原文件
- 批量模式会自动创建以原文件名命名的子目录
- 自动检测 SQL 方言,也可手动指定
更新日志
v1.1.0 (2026-04-13)
- ✨ 新增索引支持:CREATE INDEX, CREATE UNIQUE INDEX
- ✨ 新增约束支持:ALTER TABLE ADD CONSTRAINT
- ✨ 所有 6 种方言均支持索引/约束识别
- ✨ 支持 CLUSTERED/NONCLUSTERED (SQL Server)
- ✨ 支持 BITMAP 索引 (Oracle/达梦)
v1.0.0
- 初始版本
- 支持存储过程、函数、视图、触发器、表、包等基础对象