关于在kettle当中使用循环去读取数据做etl操作。

最近在做kettle相关的数据迁移。然后要循环的去读取数据把数据进行迁移操作。这里是通过js代码控制循环读取数据。

//js1代码。这个主要是读取表当中传入过来的数据。

var prevRow=previous_result.getRows();//获取上一个传递的结果 if (prevRow == null &&(prevRow.size()=0)) { false; }else{ parent_job.setVariable("tables", prevRow);//ArrayList存储表名变量,以数组形式保存入[[table1],[table2]] parent_job.setVariable("size", prevRow.size());//存储执行表的总数量 parent_job.setVariable("i", 0);//循环控制变量 parent_job.setVariable("TABLENO",prevRow.get(0).getString("tableno",""));//从上一个步骤中获取第一个表的表名,并赋值给TABLENAME变量 true; }

  

//js2这个是对表当中的表数量进行累加计数

var list_Tables = parent_job.getVariable("tables").replace("[","").replace("]","").split(","); var size = new Number(parent_job.getVariable("size")); var i = new Number(parent_job.getVariable("i"))+1; if(i<size){ parent_job.setVariable("TABLENO", list_Tables[i].trim()); } parent_job.setVariable("i",i); true;

  

表数量校验的截图如下:

 两个转换当中数据输入如下:

获取表名称的转换

 上面是根据表当中的id获取到具体的表名称是什么,下面是是获取将要导入的表全部数据。

至此问题得到解决。

原文地址:https://www.cnblogs.com/gxgd/p/11310001.html