前面我们介绍了 Kettle的Spoon的转换和作业定时任务GUI设计方式以及运行,但是在实际应用中,我们需要计划任务是在服务器后台运行。
首先我们需要了解Kettle的Kitchen和Pan
Kitchen——作业(job)执行器 (命令行方式)
Pan——转换(trasform)执行器 (命令行方式)
下面我们将重点讲解经常会用到的 ***作业执行器 Kitchen.bat *** 。
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 不写日志
命令行执行配置方式
1、新建一个bat文件,命名job.bat,然后编辑,输入内容如下:
d: ## Kitchen.bat所在路径盘符 cd D:\software\Kettle7 ## Kitchen.bat所在目录 ## 作业(job)文件路径和日志文件路径 ## 执行kitchen执行job,并写入日志 kitchen /file:D:\KettleProject\job2.kjb /level:Base>>D:\KettleProject\test.log
注意:确保路径的正确性。
2、双击job.bat,即可运行。
后台运行配置方式
我们已经建立了命令行运行的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 :: d: ## Kitchen.bat所在路径盘符 cd D:\software\Kettle7 ## Kitchen.bat所在目录 ## 作业(job)文件路径和日志文件路径 ## 执行kitchen执行job,并写入日志 kitchen /file:D:\KettleProject\job2.kjb /level:Base>>D:\KettleProject\test.log
在此双击job.bat运行,我们将不会再看到控制台黑窗口继续保留在桌面上,并且等待设置的间隔时间后,我们可以看到日志文件记录。
···
2021/11/07 16:51:26 - Kitchen - Logging is at level : 基本日志
2021/11/07 16:51:26 - Kitchen - Start of run.
2021/11/07 16:51:31 - job2 - 开始执行任务
2021/11/07 16:51:31 - job2 - job2
2021/11/07 16:53:31 - job2 - 开始项[简单表同步]
2021/11/07 16:53:31 - 简单表同步 - Loading transformation from XML file [file:///D:/KettleProject/TEST2.ktr]
2021/11/07 16:53:31 - 简单表同步 - Using run configuration [Pentaho local]
2021/11/07 16:53:31 - 简单表同步 - Using legacy execution engine
2021/11/07 16:53:31 - TEST2 - 为了转换解除补丁开始 [TEST2]
2021/11/07 16:53:32 - 表输入.0 - Finished reading query, closing connection.
2021/11/07 16:53:32 - 表输入.0 - 完成处理 (I=3, O=0, R=0, W=3, U=0, E=0)
2021/11/07 16:53:32 - 插入 / 更新.0 - 完成处理 (I=3, O=0, R=3, W=3, U=1, E=0)