栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

kettle遍历

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

kettle遍历

半年多没记录学习心得了,记录一下最近项目中遇到,学到的知识,仅供参考,此文章有的地方或者能容不够严谨,制作学习参考,该文本以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;
}

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/996729.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号