在kettle使用循环来处理表中的数据

有时候,如果kettle事务中源表的数据非常大的时候,一下子把源表中的数据全部读入内存的方式是不可取的。在mysql中,我们可以通过循环的方式,使用limit来定量取得一部分数据来处理。即,关键的sql是:select * from table_name limit current_value, step_value; 以下做一个思路演示。
1:取得记录中的所有的数量,初始化当前循环值等;
2:循环的判断条件是:当前的循环值小于最大的循环值
2.1:修改sql语句中查询的起始值
2.2:用一个转换来处理查询结果,这个例子是将结果追加到文件中;
2.3:将当前的循环值加1;

总的job流程图

第1步的配置信息

第2步的配置信息


第2.1步的配置信息
var stepValue = new Number(parent_job.getVariable("STEP_VALUE"));
var i = new Number(parent_job.getVariable("CURRENT_LOOP"))*stepValue;
parent_job.setVariable("CURRENT_CURSOR",i);
true;

第2.2步的配置信息


第2.3步的配置信息
var i = new Number(parent_job.getVariable("CURRENT_LOOP"))+1;
parent_job.setVariable("CURRENT_LOOP",i);
true;

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Kettle循环抽取数据的步骤如下: 1. 首先,你需要创建原始和目标。原始可以是school和school1,目标可以是school_kettle和school1_kettle。这些需要在Kettle提前建好。 2. 第二步是使用分页行号节点来获取分页的数值。你可以使用以下SQL语句来实现这一步骤: ``` SELECT a.rownum FROM (SELECT @rownum:= @rownum + 1 AS rownum, m.* FROM (SELECT @rownum := 0) t,`palm_clinic_payment_bill` m) a WHERE a.rownum <= ? ``` 这个SQL语句会返回分页的行号。 3. 如果你获取不到字段或者字段比较多,可以使用一个小技巧。将上一步的分页查询的SQL的变量替换成数字1,示查询第一页。这样你可以直接运行这个SQL语句,然后在输出的时候获取全部的字段。这样就不用一个个选择字段了。在填写数据库字段、字段和流字段时,记得将上一步的SQL还原。 这样,你就可以在Kettle循环抽取数据了。希望对你有帮助!\[1\]\[2\]\[3\] #### 引用[.reference_title] - *1* [使用Kettle循环处理数据(方式一)](https://blog.csdn.net/qq_45083975/article/details/121848746)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v12^insert_chatgpt"}} ] [.reference_item] - *2* *3* [Kettle分页循环抽取全量数据,三步搞定](https://blog.csdn.net/GordoHu/article/details/129703977)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v12^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值