Kettle的定时任务

Kettle做定时任务有两种方式

第一种是kettle自带的Start控件,但这种方法有一个很明显的不足,就是这种方法需要kettle程序包必须一直运行,否则失效,如果一直运行,会对系统造成一种浪费,并且会存在很多的不确定性;

第二种是使用系统的定时功能。使用Kitchen、Pan命令编写bat、sh脚本,然后使用windows任务计划或者linux的crotab实现定时执行执行脚本。

(一)Start控件执行定时任务

我们需要建立一个job,来让转换定时执行。
操作步骤
1、运行软件,进入主界面。点击左上角的 文件 → 新建 → 作业(J)新建一个作业(job),并保存,作业的后缀名为kjb。

在这里插入图片描述

2、点击面板左侧的 核心对象 ,选择 通用文件夹下的 START 和 转换 并把它拖到右侧的编辑区中,按住 shift 画线连接“START” 和“转换”。

在这里插入图片描述

3、双击编辑区的“START”图标,设置定时任务。记住勾选重复选项,不勾选,任务只会执行一次。

在这里插入图片描述

4、双击编辑区的“转换”图标,设置要定时执行的转换。

在这里插入图片描述

5、点击“Run”,选择“本地执行”,点击“执行”来执行这个转换。

在这里插入图片描述

6、等待设置的间隔时间后,正确执行效果如图

在这里插入图片描述

(二)系统定时执行脚本

前面我们介绍了 Kettle的Spoon的转换和作业定时任务GUI设计方式以及运行,但是在实际应用中,我们需要计划任务是在服务器后台运行。

首先我们需要了解Kettle的Kitchen和Pan

  • Kitchen——作业(job)执行器 (命令行方式)
  • Pan——转换(trasform)执行器 (命令行方式)

下面我们将重点讲解经常会用到的作业执行器 Kitchen.bat。参数项使用 /rep:参数值 或者 -rep=参数值 这两种方式都可以。

Kitchen 参数说明:
-rep:Repository name 任务包所在存储名
-user:Repository username 执行人
-pass:Repository password 执行人密码
-job:The name of the job to launch 任务包名称
-dir:The directory (don’‘t forget the leading / or )
-file:The filename (Job XML) to launch
-level:The logging level (Basic, Detailed, Debug, Rowlevel, Error, Nothing) 指定日志级别
-log:The logging file to write to 指定日志文件
-listdir:List the directories in the repository 列出指定存储中的目录结构。
-listjobs:List the jobs in the specified directory 列出指定目录下的所有任务
-listrep:List the defined repositories 列出所有的存储
-norep:Don’'t log into the repository 不写日志

Windows编写Bat脚本文件

这个前提是首先形成一个job,也就是kettle的kjb,有了这个才能继续下去;有了kjb文件后,形成批处理文件

1.新建一个bat文件,命名(自己定义一个名称就行)JOB.bat,然后编辑,输入内容如下:

:: Kitchen.bat所在路径盘符
D:
:: Kitchen.bat所在目录
cd D:\应用软件\Kettel数据工具\kettle免安装环境包\kettle-7.0.0.0-25免安装版\data-integration
:: 作业(job)文件路径和日志文件路径
:: 执行kitchen执行job,并写入日志
kitchen.bat /file:G:\kettle工具缓存\3.作业\2-修改项目上报的状态.kjb /level Basic>>G:\kettle工具缓存\5.log\fjzx_%date:0,4%%date:5,2%%date:~8,2%.log

注意:确保路径的正确性。
windows bat文件中注释符为::
使用notepad编辑时,记得编码改为ANSI编码,否则会乱码,文件无法执行

在这里插入图片描述

2、双击JOB.bat,即可运行
在这里插入图片描述
3、后台运行脚本文件

我们已经建立了命令行运行的bat文件,并且已经可以正确执行我们的ETL任务了,但是现在我们在运行bat后,桌面上面会一直存在一个控制台的窗口,我们可以使用bat命令中的隐藏窗口的命令。

修改我们的JOB.bat文件

::隐藏命令行窗口
@echo off
if “%1” == “h” goto begin
mshta vbscript:createobject(“wscript.shell”).run(“%~nx0 h”,0)(window.close)&&exit
:begin
:: Kitchen.bat所在路径盘符
D:
:: Kitchen.bat所在目录
cd D:\应用软件\Kettel数据工具\kettle免安装环境包\kettle-7.0.0.0-25免安装版\data-integration
:: 作业(job)文件路径和日志文件路径
:: 执行kitchen执行job,并写入日志
kitchen.bat /file:G:\kettle工具缓存\3.作业\2-修改项目上报的状态.kjb /level Basic>>G:\kettle工具缓存\5.log\fjzx_%date:0,4%%date:5,2%%date:~8,2%.log

在此双击job.bat运行,我们将不会再看到控制台窗口继续保留在桌面上,并且等待设置的间隔时间后,我们可以看到日志文件记录。
在这里插入图片描述
在这里插入图片描述


Windows定时执行Bat脚本
(1)写好bat批处理文件后,加到计划任务中。在windows的搜索栏中,搜索“任务计划”(不同版本不太一样),如图

在这里插入图片描述

(2)点击程序菜单项的操作,选择创建任务;点击常规,在名称后面输入任务名称,如果想限制用户执行,可点击更改用户或组进行限定。再选择用户是否登录时运行。

在这里插入图片描述

(3)点击触发器选项卡,点击新建,弹出新建触发器,可以设置任务循环周期时间,按照实际需求进行设定;上面的开始任务下拉框可以进行选择,一般我们选择按预定计划;接下来选择频率,如每天,每月,每周;这个和用kettle自带功能一样,不再叙述

在这里插入图片描述
在这里插入图片描述

(4)点击操作选项卡,点击左下角新建,弹出新建操作,点击浏览。选择要执行的任务程序或文档,点击打开确定

在这里插入图片描述
在这里插入图片描述

(5)点击条件选项卡,还可以设置其它需求,比如计算机不空闲时停止等。点击设置,同样可以再根据需要勾先项目,最后按确定。

在这里插入图片描述
在这里插入图片描述

(6)返回任务计划程序界面,点击“任务计划程序库”,在中间把滚动条往下拉,就可以看到建立好的定时任务,如果想删除则双击该任务,在右下角点击删除即可。

在这里插入图片描述


版权声明:本文为weixin_46861799原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。