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的值,判断循环是否结束,这个最后插入数据库中的数据。
涉及学习案例以及教程:https://download.csdn.net/download/BushQiang/20733934