决定采用Kettle作为ETL工具把第三方数据(SqlServer),经过简单粗暴的方式同步到本地我们这边的DW(Oracle),问题也基本解决,现在是想把其中碰到几个问题分享出来。
1.数据转换(最小单元任务)搭建
DB连接,如果是sqlserver、oracle因为考虑采用JDBC方式,kettle自身未携带jar包,所以需要把sqlserver4、ojdbc16放入lib目录下
2.数据在流程中,简单数据转换
这里我采用javascript的脚本,简单的语法
var yearvalue = LOG_TIME.getTime(); var value = yearvalue;
获取变量,那在接下来的就能获取value的变量值
3.当主任务需要分发给多个子任务时候
数据可能需要分发,则右键->数据发送->Round Robin,如果数据是重复性发送,选择复制发送模式
4.数据表的更新
a.直接通过插入、更新的机制
b.sql完成,执行SQL脚本
5.作业关联转换任务
其实作业是作为定时任务机制而采用,那么在完成作业时,有必要对于每个任务作为最小单元任务
6.作业对其时间控制
作业中start的按钮双击,进行时间控制
7.对于执行SQL的脚本,我们可以采纳preparestatment的预编译的方式来完成'?',sql的执行
8.如何使用脚本进行定时任务推动(环境变量先设置)
title WMS Data Migrate cd D:\Downloads\pdi-ce-5.0.1.A-stable\data-integration Kitchen.bat /file D:\NEVERSAYGOODBYE\KettleJob\job.kjb /level Basic /logfile d:\MyTest.log pause
9.linux则采用shell脚本即可启动,如果是job则采用kitchen,而转换则采用pan来执行
10.基础培训可以参考文件(baidu文库中下载)