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.bat kettle的作业执行器
-rep=test 资源库的名字(我的是test)
-user=admin 资源库的用户名
-pass=admin 资源库的密码
-dir=/ job在资源库里的目录(这里的目录是 / 根目录)
-job=test job名(这里的job名字是 test)
-level=basic 日志等级
>>C:\kettle\test.log 日志存放的路径 >是覆盖写入 >>是追加写入
然后双击bat文件
执行完成以后 会在设置的日志路径下,产生一个日志文件
这里我是执行了两边,追加写入日志里
现在来查一下表
数据进去了,说明bat执行kettlejob没有问题
现在我们来配置定时任务,让电脑自动执行bat文件,就可以调度了
打开控制面板,搜索计划任务
点击创建基本任务
这些配置,按需求填写就好,完成以后,双击任务,在继续配置
一般任务是放在/目录下的,如果你点到别的目录,就会找不到任务在哪,这时候就点击根目录就好
这样就找到了,双击任务,编辑触发器
这里也按需求设置一下,我这边测试就随便填一下了
接下里就是等他自动执行了
正常执行了,数据也正常插入了
来源地址:https://blog.csdn.net/m0_71519623/article/details/128238901