编写bat脚本,让windows定时执行kettlejob,实现kettle调度
Posted 等我5分钟
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了编写bat脚本,让windows定时执行kettlejob,实现kettle调度相关的知识,希望对你有一定的参考价值。
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.jobtest
select now()
先执行一下,以免组件报错,导致bat文件报错
查一下表
ok,表里数据正常
我们现在来写bat文件,先新建一个txt文本,写上bat代码,保存,更改文本后缀txt改为bat
C:
cd C:\\kettle\\data-integration
kitchen.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文件,就可以调度了
打开控制面板,搜索计划任务
点击创建基本任务
这些配置,按需求填写就好,完成以后,双击任务,在继续配置
一般任务是放在/目录下的,如果你点到别的目录,就会找不到任务在哪,这时候就点击根目录就好
这样就找到了,双击任务,编辑触发器
这里也按需求设置一下,我这边测试就随便填一下了
接下里就是等他自动执行了
正常执行了,数据也正常插入了
Windows下Kettle定时任务执行并发送错误信息邮件
Windows下Kettle定时任务执行并发送错误信息邮件
1.首先安装JDK
2.配置JDK环境
3.下载并解压PDI(kettle)
目前我用的是版本V7的,可以直接百度搜索下载社区版,企业版收费,社区版免费
下载地址:https://sourceforge.net/projects/pentaho/files/Data%20Integration/
4.打开解压文件夹kettle找到spoon.bat,双击打开
5.新建作业
点击左上角文件
=>新建
=>作业
如下图:
6.然后开始建立作业
流程如下图,直接拉图标就行
7.编辑 “转换”
右键编辑转换选择Open Referenced Object
、Transformation
然后新建一个转换
8.新建的转换流程和配置如下
我做的是表的数据同步到另一个表中,只是做了简单的处理,没有做冲突验证
然后选择点击获取SQL查询语句
可以预览查看数据
9.输出表配置
配置输出表的数据库连接新建数据库连接然后选择目标表
其余的三个都是不同的表而已
10.设置转换日志
双击转换然后设置日志信息
其他的转换也同样设置,有几个转换就设置几个错误日志发送邮箱。日志级别最好选择详情日志
11.邮箱设置
其他邮箱也要这么设置。
12.编写完毕后就可以直接运行
点击右上角的运行符号跑起来后,不管成功或者失败都会发送邮件到你的邮箱。然后登录自己的邮箱就可以从邮件中直接查看错误日志了。附件中有详细的错误日志信息
13.怎么在windows中设置定时任务
当然可以直接在START中设置定时任务的
不过不如做成脚本直接让windows帮忙运行
保存作业生成一个后缀为kjb的一个文件,然后编写一个bat脚本文件:
@echo "该脚本这么解释,先进入kitchen.bat所在目录,执行kitchen 后面为所带参数"
cd /d D:
cd D:Kettle
kitchen /file E:kettle_files iming.kjb /level Basic /logfile E:kettle_logs iming.log
@pause
cd /d D: 意思是强制进入D盘
cd D:Kettle 意思是进入到Kettle的kitchen.bat所在目录中
kitchen /file E:kettle_files iming.kjb /level Basic /logfile E:kettle_logs iming.log 是使用kitchen的方式执行timing.kjb的作业,并在E盘的kettle_logs下生成执行的日志
14.返回桌面,右键此电脑,进入管理,右键-任务计划程序-新建基本任务
定时任务参考地址:https://blog.csdn.net/huiweizuotiandeni/article/details/54382639
以上是关于编写bat脚本,让windows定时执行kettlejob,实现kettle调度的主要内容,如果未能解决你的问题,请参考以下文章
使用windows自带任务计划管理程序定时 调用Kettle作业
Windows Server 2008中使用计划任务定时执行BAT bat进行PHP脚本的执行