服务器上定时执行kettle作业任务

    此时我们在kettle上已经完成了作业流程,并确保作业流程的执行没有问题。下面我们就要将数据抽取作业部署到服务器任务计划程序库中定时执行(以下是在windows环境下的执行方式)。

第一步:通过bat批处理文件执行数据抽取作业(即kjb文件)

建立一个bat文件,里面写入:

@echo off 
set d=%date:~0,4%%date:~5,2%%date:~8,2%
set name=日志名称_%d%.log
D:
cd D:/ETL/data-integration
kitchen.bat /norep -file=D:/ETL/kettledata/作业/作业名称.kjb  /logfile=D:/ETL/kettledata/日志/%name%

exit

其中 : set d=%date:~0,4%%date:~5,2%%date:~8,2%  在cmd中获取当前系统时间,格式为20180627

set name=ydys_病案首页_%d%.log  拼接文件名称

cd D:/ETL/data-integration  跳转到你电脑上kettle的安装路径下 

kitchen.bat /norep -file=D:/ETL/kettledata/作业/作业名称.kjb  调用kitchen.bat并执行指定的数据抽取作业

/logfile=D:/ETL/kettledata/日志/%name%  输出日志的路径及文件名称,最后退出

第二步:由于在执行bat批处理文件时服务器会弹出一个cmd.exe窗口,黑乎乎的不好看,本人也有强迫症,所以将bat批处理文件转换为vbs文件再执行时,就可以解决cmd.exe窗口的弹出问题。

创建一个vbs文件,里面输入:

Set ws = CreateObject("Wscript.Shell")

ws.run "cmd /c D:\上一步bat文件及路径.BAT" ,vbhide

然后将该vbs文件部署到服务器任务计划程序库中执行就好了。

至于如何部署这里就不详细说了。

 

顺便再说一下如何删除一月之前的日志,若日志的文件名不含时间,则不能使用该方法。

按照上面第一步输出的日志入下图所示:

我们如何删除呢,同样的创建一个bat文件,里面输入:

@echo off
set y=%date:~0,4%
set m=%date:~5,2%
set d=%date:~8,2%
set /a m-=1
if %m% LSS 11 set m=0%m%
if %m%==00 set m=12&set /a y-=1
set datestr=%y%%m%%d%
setlocal EnableDelayedExpansion
for %%i in (D:\ETL\kettledata\日志\*.log) do (
    set var1=%%i
    set var2=!var1:~-12,8!
    if !var2! lss %datestr% (del D:\ETL\kettledata\日志\*!var2!.log)
)
endlocal
exit 0

其中,D:\ETL\kettledata\日志\ 是在服务器上日志的存放路径

set /a m-=1   将获取到的系统月数减1,即删除一月之前的数据

这样我们就可以将距系统时间一月之前的日志进行删除。

 

### 如何配置Pentaho Kettle定时任务执行 #### 使用 Spoon 创建带参数的定时任务并将其部署到服务器后台运行 为了使Kettle任务能够在服务器上作为后台进程定期自动运行,可以采用如下方法: 对于希望在特定时间触发作业的情况,在本地利用Spoon完成转换和作业的设计之后,需进一步考虑如何让这些流程按照预定的时间表启动。一种常见的方式是借助操作系统的调度功能——例如Linux下的`cron`服务或Windows的任务计划程序。 当准备就绪后,可编写批处理(.bat)文件来调用Kitchen.bat(用于执行Job)或者Pan.bat(用于执行Transformation),并通过命令行传递必要的参数,如作业路径、日志级别等信息[^4]。 ```batch @echo off if "%1" == "h" goto begin mshta vbscript:createobject("wscript.shell").run("%~nx0 h",0)(window.close)&&exit :begin :: 设置工作目录至Kitchen.bat所在的磁盘分区及具体位置 cd D:\software\Kettle7 :: 调用kitchen执行指定job并将输出追加记录到log文件中 kitchen /file:D:\KettleProject\job2.kjb /level:Basic >>D:\KettleProject\test.log ``` 此脚本展示了怎样静默模式下启动一个名为`job2.kjb`的工作流实例,并将执行过程中的基本信息保存于`test.log`文档内。 #### 利用操作系统自带工具实现自动化调度 - **Linux**: 用户可以通过`crontab -e`指令进入个人用户的定时任务管理界面,添加新条目以安排上述`.bat`脚本或其他形式的Shell Script按周期性规律被执行。需要注意的是,如果命令字符串里包含了百分号(`%`)字符,则应该替换为两个连续的百分号(`%%`)以便正确解析[^3]。 `* * * * * sh /path/to/script.sh` - **Windows**: 对应地,在Windows平台上则应当运用“任务计划程序(Task Scheduler)”图形化界面或是PowerShell cmdlet (`Register-ScheduledTask`, `New-ScheduledTaskTrigger`, etc.) 来达到相同目的。 另外,考虑到跨平台兼容性和集中管控的需求,部分企业级方案可能会引入专门的日程管理系统(Cron Service), 或者依赖CI/CD流水线工具(Jenkins, GitLab CI)集成此类特性。 #### 参数化与环境变量支持 为了让同一个物理上的作业能够适应不同场景的应用需求,建议合理规划输入参数列表及其默认值设定;同时充分利用系统级别的环境变量机制,使得像数据库连接串这样的敏感数据不必硬编码进源码之中而是动态获取自外部配置项。这不仅有助于提高灵活性也增强了安全性[^5]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值