伺服器上定時執行kettle作業任務

2021-08-21 01:23:59 字數 1844 閱讀 2436

此時我們在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,即刪除一月之前的資料

這樣我們就可以將距系統時間一月之前的日誌進行刪除。

Linux伺服器上crontab定時執行指令碼檔案

1 安裝crontabslinux應該都有crontab,沒有的話可以安裝一下 yum install crontabs 安裝完以後開啟crontab服務 service crond start 用以下的方法啟動 關閉這個cron服務 service crond start 啟動服務 service...

批處理定時執行任務 定時執行Abaqus作業任務

abaqus分析計畫任務的批處理執行,基於windows的批處理檔案的實現和基於python指令碼的實現,大家應該都很熟悉了,通過事先編譯好的指令碼檔案來批處理計畫任務,簡單示例如下 windows 批處理檔案 bat 示例 abaqus job test1 cpus 4 intabaqus job...

定時器(指令碼定時執行)

在學習大資料的時候,有很多命令都是用手動來執行的,這在實際專案中顯然是不合適的,實際專案中是需要用定時器來執行相應的指令碼的,關於定時器的知識點如下所示。基本格式 command 分 時 日 月 周 命令 第1列表示分鐘1 59 每分鐘用 或者 1表示 第2列表示小時1 23 0表示0點 第3列表示...