业务需求:新OA中有一份数据没有,只能从旧OA中取, 于是我把数据备份到DW中,直接从DW中取数。
什么是kettle
Kettle是一款国外开源的ETL工具,纯java编写,可以在Window、Linux、Unix上运行,数据抽取高效稳定。
Kettle 中文名称叫水壶,该项目的主程序员MATT 希望把各种数据放到一个壶里,然后以一种指定的格式流出。
官网下载
流程
一、 读入数据
新建transformation (ctrl+n), steps里选择Table input, 并拖到图中。
双击,弹出对话框,更改Step Name为 Read Data, 点击Connection 后面的new, 弹出对话框,填入数据库信息。测试成功后关闭。然后Connections选择数据库名字,如这里OLD_OA , 然后在SQL框里输入SQL语句,基本语句已经写好,可以修改相应内容就好了。输入完后可以点击Preview预览下内容,这时会弹出输入框要求输入默认行数,保持默认就好了。预览信息确认无误后,可以关闭,点击OK,这一步就是好了。
二、 写入数据库
其实整个过程和读入数据类似,steps里选择Table out
双击,修改Step name为 Write to Database, Connections 点击new填入数据库信息。这里要注意的是这里的数据是目标数据库,是要把信息存入的数据库。修改相应的信息,Connection里选择刚刚的数据库,Target schema为服务名, Target table写入数据库里未存在的表名。至此,好像除了点OK,都结束了。
注意:这里有一个关键点,一定要点击sql,会出现一个sql语句,这里生成table的语句,然后点击excut执行,否则等下运行tranformation的时候会报错,表不存在
三、 连接steps
两个steps建立好了,鼠标按住read data 同时按信shift键拖动鼠标到write to database,会有一条线出现,这条线就是hops, 其实就是流程方向,双击的话会看到对话框,从read data 到write to database。
四、 运行transformation
一切就绪,点击运行图标,对话框信息默认,直接点击Run, transformation就如我们期待那样正常运行了。运行结束,可以到目标数据库中查看,我们想要到数据已经出现了。
后记
其实kettle非常强大,可以做的事情还有很多,数据的抽取,清洗,转换,加载,我这时只是做了最基本的流转,其实直接用代码写也不会慢,但是可以做个示范,有兴趣的朋友可以自己探索下。