1. Kettle 核心组件Kettle 数据ETL工具 PDI
数据处理、转换、迁移 纯Java编写 稳定快
- spoon.sh 图形化界面
- pan.sh 命令行执行spoon的 transform 和 job
- kitchen.sh 命令行调用spoon的 job
- carte.sh 轻量级web
解压 Kettle zip包,即可
双击 spoon.bat 即可打开图形化界面
3. Kettle 初体验4. Kettle 核心概念csv -> excel
-
Kettle 可视化编程
-
转换 输入、转换、校验、输出,有步骤组成,最小单位为行
-
步骤 控件,输出跳有分发(轮询)和复制两种
-
跳 两个步骤之间的连接
-
元数据 数据描述
-
数据类型
-
并行 每个跳并行执行
-
作业 工作流控制,封装转换
| 控件名称 | 使用示例 |
|---|---|
| CSV文件输入 | CSV->Excel |
| 文本文件输入 | TXT->Excel |
| Excel输入 | Excel 2 Sheet ->Excel Sheet |
| XML输入 | XML->Excel |
| JSON输入 | JSON->Excel |
| 表输入 | Table->Excel |
5.2 Kettle 常用输出控件MySQL的话需要加入MySQL的驱动包在lib下
| 控件名称 | 使用示例 |
|---|---|
| Excel输出 | Table->Excel |
| 文本文件输出 | Table->TXT |
| SQL文件输出 | Table->SQL |
| 表输出 | Table->Table |
| 表插入/更新 | Table->Table |
| 表删除 | Table->Table |
| 控件名称 | 控件含义 |
|---|---|
| Concat fields | 字段连接,增加新列 |
| 值映射 | 改变原来的值 |
| 增加常量&增加序列 | 增加一列数据 |
| 字段选择 | 选择字段、改变字段名称和类型 |
| 计算器 | 常用聚合函数 |
| 字符串剪切、替换、操作 | 针对字符串的函数 |
| 排序记录&去除重复记录、唯一行【推荐】 | 对于行的操作 |
| 拆分字段 | 一个字段拆分成多个,行操作 |
| 列拆封成多行 | 相当于表侧写 |
| 行扁平化 | 上面得逆向操作 |
| 列转行 | 多行转一行 |
| 行转列 | 一行转多行 |
| 控件名称 | 控件含义 |
|---|---|
| 替换NULL值 | null->指定值 |
| 写日志 | 将数据流打印到控制台 |
| 控件名称 | 控件含义 |
|---|---|
| Switch-case | 根据字段不同值,多路输出 |
| 过滤记录 | 根据字段值进行过滤,多路输出 |
| 空操作 | 啥也不做,常做数据流终点 |
| 中止 | 数据流终点,程序调试 |
| 控件名称 | 控件含义 |
|---|---|
| 数据库查询 | 左连接,左表是跳中的数据流 |
| 流查询 | 两张表字段等值匹配 |
| 控件名称 | 控件含义 |
|---|---|
| 合并记录 | 合并两个新旧数据源 |
| 记录集连接 | 两张表Join操作 |
| 控件名称 | 控件含义 |
|---|---|
| 分组 | 类似于SQL的group by |
| 控件名称 | 控件含义 |
|---|---|
| 映射(子转换) | 对于子转换做转换 |
| 控件名称 | 控件作用 |
|---|---|
| 执行SQL脚本 | 执行自定义的SQL语句 |
可串行执行,一个作业可包含多个作业项
- 作业项:作业项之间是步骤流
- 作业跳:作业项之间的连接线
- 无条件执行
- 上一结果为真
- 上一结果为假
7. Kettle 常用参数调整Kettle 资源库:将作业和转换 信息保存到库,可以远程跨平台使用
- 调整JVM大小
- 调整commit提交记录数
- 尽量使用数据库连接池
- 尽量使用SQL
- 尽量缩小输入数据集



