您的位置:首页 > 其它

调用kettle api传参时不赋值的解决方法

2016-07-05 17:23 176 查看
在生成的xml文件中默认指定了一个初始化参数值,然后在run时动态传入实际值,却不起作用,纠结了老多时间,终于发现解决法了。过程阐述如下,做一个记录,也为遇到同样问题的朋友提供帮助。

在生成job文件时,设置一个参数,并附默认值,代码如下:

// 若为增量,需要添加增量参数
if (incr != null && incr.equals("1")) {

try {
jobMeta.addParameterDefinition("v_date", "to_date('19000101','yyyymmdd')", "增量时间");
} catch (DuplicateParamException e) {
e.printStackTrace();
}
}


效果如下:



然后在run作业的时候,动态传入参数值:

if(schType!="0"){//若为非全量,需要设置时间参数
try {
job.getJobMeta().setParameterValue("v_date", "to_date('"+beginDate+"','yyyymmdd')");
} catch (UnknownParamException e1) {
e1.printStackTrace();
}
}
如上这样的写法就是正确的。

但是,如果你写成job.setParameterValue("v_date", "to_date('"+beginDate+"','yyyymmdd')");那么打死也传不进去值。

我就纳闷了,kettle这个Job对象中的方法做嘛用的,误导人。。

经过这段时间对kettle api的研究,发现kettle核心其实做的还是挺粗糙的,api更粗糙,bug也多。。。。。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: