kettle 的 kitchen.bat 後面參數說明:
Kettle是一個開源的ETL(Extract-Transform-Load的縮寫,即資料幫浦、轉換、裝載的過程)項目,項目名很有意思,水壺。按項目負責人Matt的說法:把各種資料放到一個壺裡,然後呢,以一種你希望的格式流出。Kettle包括三大塊:
Spoon——轉換/工作(transform/job)設計工具 (GUI方式)
Kitchen——工作(job)執行器 (命令列方式)
Span——轉換(trasform)執行器 (命令列方式)
Kettle是一款國外開源的etl工具,純java編寫,綠色無需安裝,資料幫浦高
效穩定。Kettle中有兩種指令檔,transformation和job,transformation完成針對資料的基礎轉換,job則完成整個工作流程的控制。
因為最近工作需要所以不得不研究下調用kitchen.bat後面接參數的問題。
經過一段時間的研究終於知道傳參的方法了。
如下:
kitchen.bat 後面可以是-也可以是/然後再加options
Options:
/rep : Repository name
/user : Repository username
/pass : Repository password
/job : The name of the job to launch
/dir : The directory (dont forget the leading /)
/file : The filename (Job XML) to launch
/level : The logging level (Basic, Detailed, Debug, Rowlevel, Error, Nothing)
/logfile : The logging file to write to
/listdir : List the directories in the repository
/listjobs : List the jobs in the specified directory
/listrep : List the available repositories
/norep : Do not log into the repository
/version : show the version, revision and build date
/param : Set a named parameter <NAME>=<VALUE>. For example -param:FOO=bar
/listparam : List information concerning the defined parameters in the specified job.
/export : Exports all linked resources of the specified job. The argument is the name of a ZIP
file.
而options 後面可以是=也可以是:也可以是空格
kitchen.bat /file d:\ 或者 -file=D:\ 或者/file:D:\等等都可以。。。
定時執行的代碼參考如下【原創】,可以執行的執行個體
1、windows下的執行方式:
建立一個mysql.dat的檔案,裡面寫入
cd D:/Kettle-3.0.2
kitchen.bat /norep -file=D:/kettledata/mysal2orcle.kjb >> kitchen_%date:~0,10%.log
exit
儲存檔案。
解釋一下上面的語句
cd D:/Kettle-3.0.2 這句的含義是跳轉到kettle的根目錄,因為kitchen.bat 檔案在根目錄下
kitchen.bat /norep -file=D:/kettledata/mysal2orcle.kjb >> kitchen_%date:~0,10%.log
上面的含義是,使用kitchen.bat 命令來執行job檔案,job檔案的存放路徑是D:/kettledata/mysal2orcle.kjb,並且將執行的結果輸出到 kitchen_%date:~0,10%.log檔案中。
2、linux下的書寫格式:
建立mysqldb.sh
內容如下
cd /home/Kettle-3.0.2 這句的含義是跳轉到kettle的根目錄,因為kitchen.bat 檔案在根目錄下
./kitchen.sh -file=/home/etl/mysql.kjb >> /home/etl/log/kettle.log
然後這個檔案在crontab中去執行
注意:linux執行shell過程中,由於linux對許可權要求很嚴格,所以kitchen.sh必須有可執行檔許可權。前面必須加上./,也就是./kitchen.sh才能執行,否則會提示找不到此命令。
kitchen.bat的使用方法:
Kitchen.bat /file:D:\job_name.kjb /level:Basic>>D:\etl.log
使用心得:
1.file和level都是前面有‘/’,後面有‘:’,任何一個都不能丟。
2.此語句要在一行上完成,中間不能有分行符號之類的。
博主從昨天就開始調試的幾個bat檔案,始終不能在我指定的檔案裡面記日誌,一直在dos介面記錄,苦思不得其果,偶然的一個把bat檔案全屏之後,發現原來語句被換行了,修改到同一行之後可以順利的運行。
3.此語句後面不能接任何語句,就算你在bat檔案裡面添加了別的語句,也不會得到執行,查閱了好多資料,沒有發現解決辦法,逼不得已,我只能把job做成了一個一個單獨的bat檔案,這個有點兒杯具。
4.JDK或者JRE很重要。
博主因為伺服器上沒有配置java環境,吃了不少苦。
先是沒裝java環境,無法運行kettle;接著裝好了java環境之後,job和轉換可以正常運行,但是kitchen.bat語句不能正常運行,又查閱了一堆資料後發現,原來是環境變數的問題,設定了環境變數之後總算可以正常運行了。
例子:
set "Ymd=%date:~,4%%date:~5,2%%date:~8,2%%time:~0,2%%time:~3,2%%time:~6,2%"
D:
cd D:\DEV\KETTLE
echo EXECUTE_TIME:%Ymd%>D:\DEV\KETTLE\zijinjob\log.txt
call Kitchen.bat /norep /file=d:\dev\kettle\zijinjob\emp_capital_ri.kjb >> D:\DEV\KETTLE\zijinjob\log.txt
注意!在調用過程中可能會出現下列的錯誤,需要檢查路徑中是否有中文:“ERROR: kitchen can't continue because the job couldn't be loaded ”