关于在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获取到具体的表名称是什么,下面是是获取将要导入的表全部数据。
至此问题得到解决。