Kettle系列教程-第十一章:使用Windows计划任务定时执行Kettle作业

Author Avatar
山小杰 7月 30, 2018
  • 在其它设备中阅读本文章

本系列教程基于Kettle 8.1(pdi-ce-8.1.0.0-365)。大部分内容同样适用于Kettle 7.x版本。
章节目录:

本章说明

对于使用Windows计划任务去执行Kettle作业这种方式,其实是分为两步的,首先是编写一个批处理脚本,脚本中写着执行Kettle作业的内容,然后是创建一个计划任务去执行这个批处理脚本。所以这一章主要是介绍批处理脚本的编写。

命令说明

Kettle的作业和转换都可以通过批处理脚本去执行,命令文件不一样,但是都在data-integration目录下。
执行作业使用的命令文件是Kitchen.bat
执行转换使用的命令文件是Pan.bat
img
两个命令文件的配置项类似,其中Kitchen.bat配置项如下:
img
Pan.bat配置项如下:
img

编写批处理脚本去执行Kettle作业

本章只介绍批处理执行Kettle作业的配置说明,执行转换的配置与作业类似,故不再介绍。
作业流程如下图,一个简单的写入文件作业,文件名和扩展名都使用了参数:
img
对于是否使用资源库,脚本内容不太一样,这里就分开来说。

执行普通作业(非资源库中的)

脚本内容:
img

@echo off

:: 进入脚本所在目录
cd /D %~dp0

:: 执行Kettle作业的脚本内容
:: 指定作业文件位置,为防止路径中出现空格,路径两侧需要使用双引号包围
"D:\Program Files\pdi-ce-8.1.0.0-365\data-integration\Kitchen.bat" -file "D:\kettle\jobs\Kettledoc\常规作业示例.kjb" ^
-level=Debug ^
-logfile "D:\Program Files\pdi-ce-8.1.0.0-365\log\kettlelog.log" ^
-param:"filename=hellokettle" ^
-param:"extend=txt"

执行该批处理文件,运行成功,传参成功,日志写入成功。如果脚本中没有指定参数,则会使用默认参数值去执行作业(注意:Kettle7.x必须要指定所有参数,不会使用默认参数值):
img
注意:日志写入是追加方式,不是覆盖写入。

执行资源库中的作业

脚本内容:
img

@echo off

:: 进入脚本所在目录
cd /D %~dp0

:: 执行Kettle作业的脚本内容
:: 指定命令文件位置,为防止路径中出现空格,路径两侧需要使用双引号包围
"D:\Program Files\pdi-ce-8.1.0.0-365\data-integration\Kitchen.bat" ^
-rep mysql-repo ^
-user admin ^
-pass admin ^
-dir /批处理 ^
-job 资源库作业示例 ^
-level=Debug ^
-logfile "D:\Program Files\pdi-ce-8.1.0.0-365\log\kettle-repo-log.log" ^
-param:"filename=kettle-repo" ^
-param:"extend=data"

执行批处理文件,运行成功,传参成功,日志写入成功:
img

创建计划任务定时执行Kettle作业

这个就比较简单了,完全是Windows操作方面,打开计划任务窗口,点击创建任务,【常规】选项卡,填写任务名称,运行用户选择SYSTEM(使用SYSTEM用户会在后台默认运行,不弹出CMD窗口),勾选【使用最高权限运行】:
img
【触发器】选项卡,根据需要配置:
img
【操作】选项卡,配置成要运行的批处理文件:
img
其他配置项按需配置,保存即可。
计划任务创建完成后,可以手动运行一下,测试作业是否可以正常运行:
img

本章完!
下一章:使用Java执行Kettle作业