kettle中没有循环的控件,我们可以使用JavaScript脚本来实现这个功能
案例:
从一个接口中获取数据,然后使用循环一条一条的插入数据库中
流程
从接口中获取数据可以参考https://blog.csdn.net/BushQiang/article/details/90049200
返回的接口数据
循环初始判断
var prevRow=previous_result.getRows();//获取上一个传递的结果 var i=new Number(0);//循环初始变量控制 if(prevRow == null && (prevRow.size()=0)) { false;//返回结果 } else { parent_job.setVariable("i", i);//循环初始值设置 parent_job.setVariable("size", prevRow.size());//循环总数量 parent_job.setVariable("name", prevRow.get(i).getString("name", ""));//获取第几条数据的值 parent_job.setVariable("province", prevRow.get(i).getString("province", "")); parent_job.setVariable("uid", prevRow.get(i).getString("uid", "")); parent_job.setVariable("city", prevRow.get(i).getString("city", "")); true;//返回结果 }
检验字段的值
获取一条数据并插入数据库中
使用获取变量来获取数据,字段选择可以选择你需要的数据
循环控制
根据i获取数据,并加1
var prevRow=previous_result.getRows();//获取上一个传递的结果 var i=new Number(parent_job.getVariable("i"));//获取循环变量 var size=new Number(parent_job.getVariable("size"));//循环总数 if(i<size) { parent_job.setVariable("name", prevRow.get(i).getString("name", "")); parent_job.setVariable("province", prevRow.get(i).getString("province", "")); parent_job.setVariable("uid", prevRow.get(i).getString("uid", "")); parent_job.setVariable("city", prevRow.get(i).getString("city", "")); } parent_job.setVariable("i", i+1);//变量加1 true;
然后再检验字段的值比较i与size的值,判断循环是否结束,这个最后插入数据库中的数据。