半年多没记录学习心得了,记录一下最近项目中遇到,学到的知识,仅供参考,此文章有的地方或者能容不够严谨,制作学习参考,该文本以MYSQL数据库为例
一、kettle项目接口1、新建转换AA
双击新建之后,连接数据库,连接之后获取SQL查询语句
完成上述步骤后可以自动获取SQL语句,点击预览
双击启动
2、新建转换BB(参考新建转换AA操作步骤)
3、 新建作业
4、配置作业转换信息
双击Start
复制一下JS代码:
var prevRow=previous_result.getRows();//获取上一个传递的结果,数据库中查询的结果集,或者文本结果集(结果集对象)
//prevRow.size() 表示结果集的的数量
if (prevRow == null &&(prevRow.size()=0))
{
false;
}else{
//初始化变量 tables,size,i 都是自定义变量名称。供后续使用
parent_job.setVariable("tables", prevRow);//ArrayList存储表名变量,以数组形式保存入
parent_job.setVariable("size", prevRow.size());//存储执行表的总数量
parent_job.setVariable("i",new Number(-1));//循环控制变量
true;
}
复制一下JS代码:
var prevRow=previous_result.getRows();
var size = new Number(parent_job.getVariable("size"));
var i = new Number(parent_job.getVariable("i"))+1;
if(i
报错: 不能编译 javascript: org.mozilla.javascript.WrappedException: Wrapped java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
索引超出边界造成的异常,size位置上的数据,发现没有值可以取得。所以,归根到底是要取的值是空的造成的。
因此需要先判空操作:
var prevRow = previous_result.getRows();//获取上一步的结果集
if (prevRow == null && (prevRow.size()=0))
{
false;
}
else
{
parent_job.setVariable("size",prevRow.size());//结果集行数
parent_job.setVariable("i",0);//设置一个变量,用于循环结果集
parent_job.setVariable("v_ID",prevRow.get(0).getString("id",""));//根据变量名取结果集中的数据
true;
}



