编写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 ObjectTransformation然后新建一个转换

技术分享图片

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脚本的执行

powershell 远程执行bat脚本,去启动一个应用,如何让应用一直运行,powershell能正常退出?

kettle定时设置每周一7点执行为啥没执行?

如何编写bat脚本定时执行某python脚本

windows怎么定时执行脚本