调用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也多。。。。。
在生成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也多。。。。。
相关文章推荐
- StringBuffer、StringBuilder、ArrayList、Vector、HashMap、HashTable是如何扩容的
- SVN提交碰到的问题奇怪的问题
- visual studio code for mac 的对齐快捷键
- Java 注解
- 操练
- java spring mvc restful 上传文件
- Leetcode练习笔记——169. Majority Element
- js自定义事件及事件交互原理概述(二)
- Oracle处理CLOB超过4000入库问题 (2)
- nginx.conf配置
- .net core相关博客
- python之当前标准时间显示
- IntelliJ IDEA centos安装
- 地址接口获取数据失败时,应该注意的,应判断查询时否成功
- tyvj P1864 [Poetize I]守卫者的挑战
- cmake:在Makefile中运行ant脚本
- 我不想写背景
- MySQL之【钻石】抢购风暴
- 文件为只读模式,且无法更改权限
- SVN 命令行操作