Install
openclaw skills install @chenjunhan633-glitch/kettle-sql-extractor从Kettle作业(.kjb/.ktr)中提取SQL脚本,支持批量提取、合并SQL组件和简洁输出
openclaw skills install @chenjunhan633-glitch/kettle-sql-extractor从Kettle ETL作业中提取SQL脚本,支持批量处理和智能合并。
--simple-output参数,避免多余文件夹--simple-output 参数,只生成SQL文件只提取,不修改 - 保持SQL原样,不做优化、转换或重组
用户需求:只需要提取后的SQL文件,不需要HTML报告、JSON总结等额外文件
解决方案:使用 --simple-output 参数
典型场景:SQL备份、脚本迁移、代码审查、版本控制
# 单个文件,只要SQL文件
python merge_kettle_sql.py job.kjb --simple-output
# 批量处理,只要SQL文件
for file in *.kjb; do python merge_kettle_sql.py "$file" --simple-output; done
用户需求:需要详细的HTML报告和统计分析
解决方案:使用 batch_extract_kettle_sql.py 工具
典型场景:项目分析、文档生成、团队分享
# 生成完整分析报告
python batch_extract_kettle_sql.py --dir /path/to/kettle/jobs --output 分析报告
# 提取单个Kettle作业中的SQL
python merge_kettle_sql.py job.kjb
# 简化输出模式(推荐,只要SQL文件)
python merge_kettle_sql.py job.kjb --simple-output
# 批量提取目录中所有Kettle作业
python batch_extract_kettle_sql.py --dir /path/to/kettle/jobs
# 批量处理指定文件
python batch_extract_kettle_sql.py --file job1.kjb job2.ktr
# 指定输出目录
python merge_kettle_sql.py job.kjb --output 提取结果
# 批量处理并生成HTML报告
python batch_extract_kettle_sql.py --dir /path/to/kettle/jobs --output 分析报告
使用参数: --simple-output
适用场景: SQL备份、脚本迁移、代码审查、版本控制
当前目录/
├── job_作业名称1_merged_detailed.sql
├── job_作业名称2_merged_detailed.sql
└── job_作业名称3_merged_detailed.sql
特点:
使用参数: --output 分析报告
适用场景: 项目分析、文档生成、团队分享、审计检查
batch_kettle_analysis/
├── batch_report.html # 📊 HTML可视化报告
├── batch_summary.json # 📋 JSON格式总结
├── batch_summary.txt # 📝 文本格式总结
└── kettle_files/ # 📂 单个文件分析结果
├── job1_kjb/
│ ├── basic_info.json # 🔍 基本信息
│ ├── sql_components.json # 📊 SQL组件列表
│ └── extracted_sql.txt # 📄 提取的SQL
└── job2_ktr/
└── ...
特点:
将单个Kettle作业中的多个SQL组件合并为一个SQL文件
# 基本用法:合并SQL
python scripts/merge_kettle_sql.py job.kjb
# 简化输出:在当前目录生成SQL文件
python scripts/merge_kettle_sql.py job.kjb --simple-output
# 批量处理多个文件
python scripts/merge_kettle_sql.py *.kjb --batch
# 生成可执行SQL(带事务控制)
python scripts/merge_kettle_sql.py job.kjb --executable
# 生成简化SQL(只包含语句)
python scripts/merge_kettle_sql.py job.kjb --simple
输出文件:
job_名称_merged_detailed.sql - 详细合并SQL(带注释和分析)job_名称_executable.sql - 可执行SQL(带事务控制)job_名称_simple.sql - 简化SQL(只包含语句)批量提取多个Kettle作业中的SQL脚本
# 批量提取目录中所有文件
python scripts/batch_extract_kettle_sql.py --dir /path/to/kettle/jobs
# 批量提取指定文件
python scripts/batch_extract_kettle_sql.py --file job1.kjb job2.ktr
# 从文件列表批量提取
echo "/path/to/job1.kjb" > kettle_files.txt
echo "/path/to/job2.ktr" >> kettle_files.txt
python scripts/batch_extract_kettle_sql.py --list kettle_files.txt
# 生成合并的SQL文件便于查看
python scripts/batch_extract_kettle_sql.py --dir /path/to/kettle/jobs --consolidate
XML解析模块,解决SQL提取的常见问题:
一键提取脚本,专门满足"只要SQL文件"的需求:
# 使用方法
./scripts/extract_kettle_sql_simple.sh <源目录> <目标目录>
# 示例
./scripts/extract_kettle_sql_simple.sh "/path/to/kettle/jobs" "/path/to/sql/output"
Windows版本的一键提取脚本:
REM 使用方法
scripts\extract_kettle_sql_simple.bat <源目录> <目标目录>
REM 示例
scripts\extract_kettle_sql_simple.bat "C:\Users\13802\Desktop\DWS\MAINTENANCE" "C:\Users\13802\Desktop\DWS原sql提取\MAINTENANCE"
--simple-output模式)--simple-output模式,便于自动化脚本处理--simple-output 参数# 确保已安装Python 3.x
python3 --version
# 安装必要的Python库
pip install lxml beautifulsoup4
# 1. 准备输出目录
mkdir -p /path/to/output
cd /path/to/output
# 2. 提取SQL(简化模式)
python scripts/merge_kettle_sql.py /path/to/kettle/job.kjb --simple-output
# 3. 验证结果
ls -la *.sql
head -20 job_*.sql
# 1. 批量分析Kettle作业
python scripts/batch_extract_kettle_sql.py --dir /path/to/kettle/jobs --output 批量分析
# 2. 查看HTML报告
open 批量分析/batch_report.html
# 3. 批量合并SQL
cd /path/to/output
python scripts/merge_kettle_sql.py /path/to/kettle/jobs/*.kjb --simple-output
症状:提取的SQL内容被截断 解决:使用内置的XML字符处理功能
症状:SQL中包含<, >等字符
解决:工具自动处理XML转义字符
症状:无法解析.kjb或.ktr文件 解决:检查文件是否为有效的Kettle XML格式
# 场景1:只要SQL文件(日常使用推荐)
python scripts/merge_kettle_sql.py job.kjb --simple-output
# 场景2:需要完整分析报告(项目分析使用)
python scripts/batch_extract_kettle_sql.py --dir /path/to/kettle/jobs --output 分析报告
# 处理前备份原始Kettle文件
cp -r /path/to/kettle/jobs /path/to/kettle/jobs_backup_$(date +%Y%m%d)
# 先测试单个文件
python scripts/merge_kettle_sql.py test.kjb --simple-output
# 检查输出
cat job_test_merged_detailed.sql
# 确认无误后批量处理
python scripts/merge_kettle_sql.py *.kjb --simple-output
# 将提取的SQL纳入版本控制(使用简化输出模式)
python scripts/merge_kettle_sql.py *.kjb --simple-output
git add *.sql
git commit -m "提取Kettle作业SQL: $(date)"
# 清理旧的批处理结果
find . -name "batch_*" -type d -mtime +7 -exec rm -rf {} \;
--simple-output 参数# 批量处理,只要SQL文件
for file in *.kjb; do
echo "处理: $file"
python scripts/merge_kettle_sql.py "$file" --simple-output
done
# 复制SQL文件到目标目录
cp *.sql /path/to/target/directory/
docs/ 目录)docs/ 目录)docs/ 目录)基于实际生产测试验证:
基于用户反馈,很多用户在使用Kettle SQL提取工具时有一个明确的需求: "我只要提取之后的sql文件,不要给我其他东西"
使用 --simple-output 参数可以完美满足这个需求:
# 单个文件
python scripts/merge_kettle_sql.py job.kjb --simple-output
# 批量处理
for file in *.kjb; do
python scripts/merge_kettle_sql.py "$file" --simple-output
done
--simple-output):只生成SQL文件--simple-output):生成HTML报告、JSON总结等额外文件--simple-output 模式注意:此工具专注于SQL提取功能,不包含任何数据库特定的转换逻辑。提取的SQL保持原样,适用于各种数据库系统。
重要提醒:如果用户的需求是"只要SQL文件",请使用 --simple-output 参数,这是满足这个需求的最直接方式。