Kettle 的定时任务可以用kettle中的job工作来定时转换,也可以使用bat脚本来启动kettle的‘.ktr’转换。
Bat脚本可在Windows上直接双击运行;也可以在‘计算机管理-->任务计划程序’中添加,并定时启动;还可以在Windows点击运行,输入cmd,在dos窗口输入命令启动。在Linux环境下启动转换的方法与Windows上差不多,所以并未多做实验。
-
新建文档,保存格式为‘name.bat’,bat脚本:
第一种情况,转换或者作业是在 本地保存,没有使用资源库的情况
d:
cd D:\kettle\kettle71\data-integration
.\pan /file D:\FR\kettle\stock_V2.ktr /level Basic /logfile D:\kettle_script\log\do.log
ps:有时候 pan /file D:\FR\kettle\stock_V2.ktr 会不好用,改为 .\pan /file D:\FR\kettle\stock_V2.ktr
第二种,使用了资源库的情况:
e:
cd E:\pdi-ce-7.1.0.0-12\data-integration
kitchen.bat -rep=DIRepository -user=admin -pass=admin -dir=/货值/移动端 -job=job_货值移动端_proc -level=basic>E:\BI\bat_log.txt
ps:如果使用资源库时,-dir 参数后边只能写 目录名,不能加上作业名, -job后边才能写作业名,但是不能写.job后缀
e:
cd E:\pdi-ce-7.1.0.0-12\data-integration
kitchen.bat -rep=DIRepository -user=admin -pass=admin -dir=/货值/移动端 -job=job_货值移动端_proc -level=basic>E:\BI\bat_log.txt
脚本解释:‘d:’是进去d盘下,‘cd’打开kettle解压的文件夹下pan所在目录,命令‘pan’启动‘.ktr’转换文件;‘pan’是启动‘.ktr’文件,‘kitchen’是启动‘.kjb’文件。
‘D:\hgy\kettle.log’是将日志写入这个文档。
‘pan’或‘kitchen’后面可跟参数含义:
而参数 后面可以是=也可以是:也可以是空格
kitchen.bat /file d:\ 或者 -file=D:\ 或者/file:D:\等等都可以
2、在dos窗口调用时,就将1中的bat文件一行一行输入。
3、任务计划程序启动
右键任务计划程序,创建基本任务:
测试时可以直接点旁边的运行:
另外,需要设置下 用户不管登录不登录 都运行
双击上边的执行计划,弹出修改 定时任务
然后可以再日志里面看到:
附:
@echo off
set PATH=%PATH%;..\001kettle
call Kitchen.bat/norep -file=01.生产与测试/数据对比作业(Main).kjb /lever:basic >04.logs\01.生产与测试.log
exit
ps:
如果报错:
DEBUG: Using JAVA_HOME
DEBUG: _PENTAHO_JAVA_HOME=E:\Java\jdk1.8.0_92
DEBUG: _PENTAHO_JAVA=E:\Java\jdk1.8.0_92\bin\java.exe
E:\pdi-ce-7.1.0.0-12\data-integration>"E:\Java\jdk1.8.0_92\bin\java.exe" "-Xms512m" "-Xmx1024m" "-XX:MaxPermSize=256m" "-Dfile.encoding=UTF-8" "-Dfile.encoding=UTF-8" "-Dhttps.protocols=TLSv1,TLSv1.1,TLSv1.2" "-Djava.library.path=libswt\win64" "-DKETTLE_HOME=E:\pdi-ce-7.1.0.0-12\data-integration" "-DKETTLE_REPOSITORY=" "-DKETTLE_USER=" "-DKETTLE_PASSWORD=" "-DKETTLE_PLUGIN_PACKAGES=" "-DKETTLE_LOG_SIZE_LIMIT=" "-DKETTLE_JNDI_ROOT=" -jar launcher\pentaho-application-launcher-7.1.0.0-12.jar -lib ..\libswt\win64 -main org.pentaho.di.kitchen.Kitchen -initialDir "E:\pdi-ce-7.1.0.0-12\data-integration"\ -rep DIRepository -user admin -pass admin -dir /»õֵ/ɺ²ú»·¾³ -job job_dc_to_hz_proc -level basic
10:19:53,959 INFO [KarafBoot] Checking to see if org.pentaho.clean.karaf.cache is enabled
10:19:58,154 INFO [KarafInstance]
*******************************************************************************
*** Karaf Instance Number: 2 at E:\pdi-ce-7.1.0.0-12\data-integration\.\sys ***
*** tem\karaf\caches\kitchen\data-1 ***
*** FastBin Provider Port:52902 ***
*** Karaf Port:8803 ***
*** OSGI Service Port:9052 ***
*******************************************************************************
2021/08/11 10:20:00 - Kitchen - Logging is at level : 基本日志
2021/08/11 10:20:00 - Kitchen - Start of run.
2021/08/11 10:20:00 - RepositoriesMeta - Reading repositories XML file: E:\pdi-ce-7.1.0.0-12\data-integration\.kettle\repositories.xml
2021/08/11 10:20:13 - job_dc_to_hz_proc - 开始执行任势
2021/08/11 10:20:13 - job_dc_to_hz_proc - 开始项[product]
2021/08/11 10:20:13 - product - Loading transformation from repository [ktr_dc_to_hz_product_proc] in directory [/货倿生产环境]
2021/08/11 10:20:14 - job_dc_to_hz_proc - 完成作业项[product] (结果=[false])
2021/08/11 10:20:14 - job_dc_to_hz_proc - 任务执行完毕
2021/08/11 10:20:14 - Kitchen - Finished!
2021/08/11 10:20:14 - Kitchen - Start=2021/08/11 10:20:00.654, Stop=2021/08/11 10:20:14.135
2021/08/11 10:20:14 - Kitchen - Processing ended after 13 seconds.
解决办法:
删掉 kettle根目录下E:\pdi-ce-7.1.0.0-12\data-integration\.kettle\db.cache-7.1.0-stable ,
删掉db.cache-7.1.0-stable 文件 ;
以及 C:\Users\Administrator\.kettle\db.cache-7.1.0-stable ,
删掉db.cache-7.1.0-stable 文件