1:cmd方式运行
1.ktr的运行:运行transformation文件是通过Pan.bat来运行的。
打开cmd命令行窗口,转到Pan.bat所在的目录,如d:\data-integration,然后执行文件的命令为:pan /file D:\03works\ZYWSPT\kettle\test.ktr
2.kjb的运行:运行job文件是通过kitchen.bat来运行的。
打开cmd命令行窗口,转到Pan.bat所在的目录,如d:\data-integration,然后执行文件的命令为:kitchen /file D:\03works\ZYWSPT\kettle\.kjb
2.bat文件运行
如果觉得通过打开命令行输入麻烦,我们可以把它写在一个批处理文件中。如:
@echo off
set panpath=C:\pdi-ce-5.4.0.1-130\data-integration
set kpath=D:\03works\ZYWSPT\kettle
c:
cd %panpath%
pan /file %kpath%\test.ktr "-param:YESTERDAY_1=%YesterDay%"
exit
把这些内容保存在pan.bat里,通过双击panKtr.bat就可以执行ktr文件了。
同理执行job
保存在kitchenKjb.bat里,双击它,也可以执行kjb文件。
2 :kettle 的 kitchen.bat 后面参数说明
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:\
下面是windows系统下一个完整的执行kettle程序的 bat 批处理文件的内容
======================================
e:
cd E:\Tools\data-integration
Kitchen.bat -rep repname -user admin -pass admin -dir /dirname -job jobname -level=basic>D:\kettlelog\kettlelog.log
失败:
我一直想在param里传一个参数之就是当前日期的前一天,一直没有成功:
如下代码:
@echo off
set panpath=C:\pdi-ce-5.4.0.1-130\data-integration
set kpath=D:\03works\ZYWSPT\kettle
for /f "tokens=2 delims==" %%a in ('wmic path win32_operatingsystem get LocalDateTime /value') do (
set t=%%a
)
set Today=%t:~0,4%-%t:~4,2%-%t:~6,2%
::echo %Today% (当前日期)
call :Date2Day %Today% 1 YesterDay
echo %YesterDay% (当前日期的前一天)
c:
cd %panpath%
pan /file %kpath%\test.ktr "-param:YESTERDAY_1=%YesterDay%"
exit
:Date2Day (当前日期前后日期加减的方法)
@echo off&setlocal
for /f "tokens=1-3 delims=/-:\, " %%a in ('echo/%~1') do (
set /a yy=%%a,mm=100%%b%%100,dd=100%%c%%100)
set /a z=14-mm,z/=12,y=yy+4800-z,m=mm+12*z-3,j=153*m+2
set /a j=j/5+dd+y*365+y/4-y/100+y/400-2472633
set /a i=j-%~2,a=i+2472632,b=4*a+3,b/=146097,c=-b*146097,c/=4,c+=a
set /a d=4*c+3,d/=1461,e=-1461*d,e/=4,e+=c,m=5*e+2,m/=153,dd=153*m+2,dd/=5
set /a dd=-dd+e+1,mm=-m/10,mm*=12,mm+=m+3,yy=b*100+d-4800+m/10
(if %mm% LSS 10 set mm=0%mm%)&(if %dd% LSS 10 set dd=0%dd%)
endlocal&set %~3=%yy%-%f%%mm%%f%-%dd%&goto :EOF
Pause
我的kettle ktr的代码很简单,就是获取一个输入参数,然后,输出到txt文件
一直没有成功,不知道错误出在什么地方,如有大神看到,请给予指正,谢谢