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语句不能正常运行,又查阅了一堆资料后发现,原来是环境变量的问题,设置了环境变量之后总算可以正常运行了。

有一篇介绍
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  不写日志
    嗯,居然不支持调度。看了一下文档,建议使用操作系统提供的调度器来实现调度,比如:Windows可以使用它的任务计划工具。



转自:http://blog.csdn.net/zoutuo/article/details/6899642

date的用法

D:\>date /T

2010-12-10 星期五

 

D:\>echo %date:~0,10%

2010-12-10

date:命令(别忘记date后面有个冒号)

~0:从索引0开始取内容

,10:取10个字符

注:也就是从”2010-12-10 星期五“从索引0开始,往后取10个字符,正好是”2010-12-10“,8个数字,2个”-“横线。

 

time用法:和date用法类似,把上面的date替换成time即可

 

常见用法:

1、每天创建以日期命名的文件

D:\>copy nul %date:~0,10%.log

已复制         1 个文件。

于是D盘下出现名为2010-12-10.log的文件。

 

2、每天创建以日期以及小时命名的文件

D:\>set filename="%date:~0,10% %time:~0,2%-%time:~3,2%.log"

D:\>copy nul %filename%

已复制         1 个文件。

D盘下出现2010-12-10 22-22.log。



  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 如果Kettle无法打开spoon.bat,可能是以下原因之一: 1. Java环境未正确配置:Kettle需要Java环境才能运行。请确保Java环境已正确配置,并且JAVA_HOME环境变量已设置。 2. Kettle安装目录错误:请检查Kettle安装目录是否正确,并且spoon.bat文件是否存在于该目录下。 3. 系统权限不足:如果您没有足够的权限来运行spoon.bat文件,则Kettle无法启动。请尝试使用管理员权限运行spoon.bat文件。 4. 其他问题:如果以上方法都无法解决问题,请尝试重新安装Kettle或联系Kettle官方支持团队获取帮助。 ### 回答2: 许多情况下,运行kettle时可能会遇到无法打开spoon.bat文件的问题。这种问题通常是由于操作系统或Java的配置问题导致的。这里提供几个可能的解决方法: 1.检查Java环境变量 首先确保计算机上已正确安装了Java开发工具包(JDK),然后检查JAVA_HOME环境变量是否已正确设置。如果JAVA_HOME未设置或没有设置正确,则您需要手动编辑环境变量来确保其设置正确。如果需要设置JAVA_HOME,请参考相关文档,以确认您的所需版本的JDK的安装路径,并设置相应的环境变量。 2.检查kettle安装路径 确保kettle的安装路径不包含文、空格或其他特殊字符,因为这些特殊字符可能会干扰文件的打开和执行。 3.尝试以管理员身份运行 如果以上两个解决方法不起作用,则请尝试使用管理员身份运行spoon.bat。有时,访问权限问题可能会阻止计算机用户打开和运行文件。 4.升级kettle版本 如果所有上述解决方法都不起作用,则可能需要升级kettle版本。升级到最新版可能会解决当前版本存在的问题。 最后,在解决kettle无法打开spoon.bat的问题前,请确保您已经备份了相关数据和文件,并且在进行任何更改前,最好准备好系统恢复选项。 ### 回答3: Kettle是一款流行的数据集成工具,而spoon.bat则是其可执行文件之一。如果Kettle打不开spoon.bat,首先需要确保已正确安装Kettle并且spoon.bat文件存在于Kettle的安装目录。如果这一切都没问题,那么可以尝试以下方法解决问题: 1. 检查Java环境:Kettle需要Java运行环境的支持,而且需要Java 7或以上版本。可以在命令行输入java -version命令检查Java版本,如果版本过低则需要升级。 2. 检查Kettle系统要求:Kettle需要一定的系统要求才能正常运行,比如需要2GB以上内存,需要64位操作系统等。如果系统不符合Kettle的要求,就会出现无法启动的问题。 3. 确认文件完整性:如果spoon.bat文件损坏或丢失一些必要的文件,就无法正常启动Kettle。可以尝试重新下载或重新安装Kettle解决这个问题。 4. 检查系统防火墙和杀毒软件:有些系统防火墙或杀毒软件可能会阻止Kettle启动。可以尝试关闭这些软件或添加Kettle到白名单解决问题。 5. 查看日志文件:Kettle可能会生成日志文件,可以在其查看具体错误信息以帮助解决问题。 如果以上方法都无法解决问题,建议联系Kettle官方技术支持或社区求助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值