使用Kettle的命名参数动态执行作业

关于如何根据传入的不同参数,达到动态运行作业的目的,这里不介绍。只提供一个思路,就是不同的调度进程调度同一个Kettle文件时,传入了不同的参数,从而得到不同的数据。

如下图所示:

image

1. 先设置参数名称,双击Kettle空白处,选择Parameters 选项卡

 

2. 输入一个参数名,默认值可以不给

image

 

3. 测试作业里有两个主要步骤

image

l set variables 用来把获取到的参数值,设置成一个变量

l write to log 用来打印变量

4. set variables 中需要设置变量名称和变量值

image

变量名是arg1 ,变量的值是通过命名参数获取进来的。所以使用${} 括起来。

5. write to log 就是简单的打印变量

image

 

6. 点击运行作业,然后给参数一个值

image

 

 

对于Linux环境需要些脚本运行,运行脚本类似下面

/kettle/data-integration7/kitchen.sh /file:testargument.kjb /param:"myarg1=123inb"

其中kitchen.sh 是kettle的调用入口

testargument.kjb 是作业文件的路径和名字,我的文件放在当前目录下,所以没有写路径

指定参数时使用双引号括起来。如果有多个参数需要指定,那么需要写多个/param 

 

需要注意,如果多个/param 中指定了相同的参数名,将会报错

Exception in thread "main" java.lang.reflect.InvocationTargetException

 

 

7. 查看运行结果

image

posted on 2019-06-06 22:24  我是一只胖子  阅读(5388)  评论(0)    收藏  举报