背景
最近接了一个需求,大致内容是对Oracle数据库的两张表读取合并,然后导入到Mysql数据库指定表中(全量更新)。因为之前从来没有接触过,遂有了这次学习实践。
Kettle介绍
Pentaho Data Integration (PDI, also called Kettle) is the component of Pentaho responsible for the Extract, Transform and Load (ETL) processes.
以上来自维基百科
Kettle为一个ETL工具(又名PDI),其强大之处在于对各种数据源都能够处理。
Kettle这个ETL工具集,它允许你管理来自不同数据库的数据,通过提供一个图形化的用户环境来描述你想做什么,而不是你想怎么做。
Kettle中有两种脚本文件,transformation和job,transformation完成针对数据的基础转换,job则完成整个工作流的控制。
作为Pentaho的一个重要组成部分,现在在国内项目应用上逐渐增多。
具体组件
Kettle目前包括4个组件:Spoon、Pan、CHEF、Kitchen。
SPOON 允许你通过图形界面来设计ETL转换过程(Transformation)。
PAN 允许你批量运行由Spoon设计的ETL转换 (例如使用一个时间调度器)。Pan是一个后台执行的程序,没有图形界面。
CHEF 允许你创建任务(Job)。 任务通过允许每个转换,任务,脚本等等,更有利于自动化更新数据仓库的复杂工作。任务将会被检查,看看是否正确地运行了。
KITCHEN 允许你批量使用由Chef设计的任务 (例如使用一个时间调度器)。KITCHEN也是一个后台运行的程序。
Spoon
下面开始介绍如何使用spoon处理oracle到mysql的数据同步
ps: jdbc驱动需要自行下载放入./data-integration/lib/下
1. 新建一个表输入对象(核心对象->输入->表输入),写好SQL。
2. 开始配置oracle链接,点击数据库连接的新建按钮就会出现下图页面,根据图片配置好相关参数并保存(如果是持续运行情况下,建议使用连接池)。
3. 开始配置Mysql输出,新建一个"插入/更新"对象(核心对象->输出->插入/更新),然后配置Mysql链接
因为Mysql8以后驱动有变化,而Native配置方式是使用的默认驱动,所以使用Mysql8以上版本的同志请使用一下方式配置(JNDI)
4. 上述的JNDI配置还需要修改Kettle的jdbc配置文件,文件路径为./data-integration/simple-jndi/jdbc.properties
5. 开始配置查询关键字和更新字段。(注:如果需要update,尽量做成先delete然后再insert,因为kettle对于update操作效率较低)
6. 然后点击运行按钮,查看效果。
后续
后面会介绍如何linux环境部署,以及Pan组件的使用。
学习链接:
以上为Kettle的学习以及Spoon组件的实践,首次接触学习的并不深入,如有错误请指出!