Kettle做定时任务有两种方式。

第一种是kettle自带的Start控件,缺点是kettle程序必须始终运行,浪费内存。

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

第一种方式很少用到,所以我们直接来介绍第二种方式

首先我们需要了解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 不写日志

我们先打开kettle,登录资源库,新建一个job

连接上自己的数据库,我们sql中写上这一段,job执行成功以后,表里就会有执行时候的时间

insert into test.jobtestselect now() 

先执行一下,以免组件报错,导致bat文件报错

查一下表

ok,表里数据正常

我们现在来写bat文件,先新建一个txt文本,写上bat代码,保存,更改文本后缀txt改为bat

C:cd C:\kettle\data-integrationkitchen.bat -rep=test -user=admin -pass=admin -dir=/ -job=test -level=basic>>C:\kettle\test.log

来说一下这些代码的含义

C:就和linux里CD 到C盘一样,进入kettle的文件盘

cd C:\kettle\data-integration 指定kettle文件夹的路径

kitchen.batkettle的作业执行器

-rep=test资源库的名字(我的是test)

-user=admin 资源库的用户名

-pass=admin 资源库的密码

-dir=/ job在资源库里的目录(这里的目录是 / 根目录)

-job=testjob名(这里的job名字是 test)

-level=basic 日志等级

>>C:\kettle\test.log日志存放的路径>是覆盖写入 >>是追加写入

然后双击bat文件

执行完成以后 会在设置的日志路径下,产生一个日志文件

这里我是执行了两边,追加写入日志里

现在来查一下表

数据进去了,说明bat执行kettlejob没有问题

现在我们来配置定时任务,让电脑自动执行bat文件,就可以调度了

打开控制面板,搜索计划任务

点击创建基本任务

这些配置,按需求填写就好,完成以后,双击任务,在继续配置

一般任务是放在/目录下的,如果你点到别的目录,就会找不到任务在哪,这时候就点击根目录就好

这样就找到了,双击任务,编辑触发器

这里也按需求设置一下,我这边测试就随便填一下了

接下里就是等他自动执行了

正常执行了,数据也正常插入了