Kettle 工具的简单使用
2017-07-17 本文已影响159人
食尘者
概述
Kettle是一款国外开源的ETL工具,纯java编写,可以在Window、Linux、Unix上运行,数据抽取高效稳定。Kettle 中文名称叫水壶,该项目的主程序员MATT 希望把各种数据放到一个壶里,然后以一种指定的格式流出。
使用示例
- 环境说明:windows 10 x64、jdk1.7.0_79、Kettle版本6.1。
- 以数据同步功能作为范例。
创建转换
-
左上方工具栏->文件->新建->转换 (或者使用CTRL+N快捷键)
创建转换文件.png -
左上方选择->主对象树-> DB连接右键->新建
新建数据源.png -
配置来源数据库和目标数据库数据源
来源数据源配置 来源和目标数据源连接目标数据源"target"配置同下,配置完后可点击下方的测试按钮进行数据库连接可用性检查。
全量同步
先删除后插入,清除目标表所有旧数据,再重新插入最新的数据,适合数据量较少的数据。
-
左上方核心对象-> 脚本->执行SQL脚本,拖动到右边空白处,鼠标悬浮出现编辑按钮:
编辑脚本任务
-
左上方核心对象-> 输入->表输入,同样拖动至右边点击编辑按钮:
来源数据定义 -
左上方核心对象-> 输出->表输出,同样拖动至右边点击编辑按钮:
数据目标定义 -
将 "执行SQL脚本->表输入->表输出" 用步骤线连接起来
定义执行顺序 -
执行转换
启动转换任务
执行成功结果
按时间戳同步
需要分表创建以下两个转换:
1、根据记录的删除日志表,删除废弃数据。
2、选定时间戳字段(比如最后修改时间),比较时间戳,判断进行操作:插入新增数据、更新修改数据。
1、删除废弃数据
- 定义获取已删除过的最大流水号表输入
- 定义获取待删除数据标识表输入
-
定义删除步骤
删除步骤定义 -
连接表输入和删除步骤
删除旧数据
2、根据时间戳同步数据
-
获取同步的时间戳
获取同步的时间戳 -
定义待同步数据的表输入
待同步数据 -
定义插入/更新步骤
插入/更新 -
连接步骤
根据时间戳同步数据
数据同步
根据比较来源和目标数据字段(来源和目标表结构及字段名一致),判断进行操作:删除不存在的旧数据、插入新增数据、更新修改数据,用于数据量不大的情况。
注意:用于合并的两个数据输入流,必须按照相同的主键按照相同的方向进行排序,否则合并出来的数据标志字段的取值是错误的。
-
定义来源数据输入
来源数据 -
定义目标数据输入
目标数据 -
定义数据合并步骤
数据合并
- 定义数据同步步骤
-
连接步骤
数据同步