Kettle(五)分页抽取、插入数据

需求:

  • 将MySQL中的数据进行分页抽取
  • 将分页抽取的数据插入到另一个MySQL表中。

整体架构

在这里插入图片描述

  • 第一步,build_query_page 查询所有的页码,将页码保存到结果;
  • 第二步,set_values 从结果中获取页码,将页码设置为环境变量;
  • 第三步,execute_by_page 从环境变量中获取页码,根据页码,循环获取每页数据并输出到表中。

1.主流程

transfer_table1_to_table2.kjb


2.页数查询

build_query_page.ktr

2.1 input_page

-- 每页30000条数据,查询页码
SELECT
	t.P_PAGE
FROM (SELECT (@rowNum:=@rowNum+1) P_PAGE FROM t_kettle_test t, (select (@rownum :=0) ) b) t
WHERE t.P_PAGE <= (SELECT CEIL(COUNT(*) / 30000) FROM t_kettle_test t)

2.2 字段选择

2.3 复制记录到结果字符串


3.循环分页查询、插入

loop_execute.kjb

3.1 set_values.ktr

3.1.1 get_page

(从结果获取页码)

3.1.2 set_param

(将页码设置为环境变量)

3.2 execute_by_page.ktr

3.2.1 获取变量

(获取之前设为环境变量的页码)

3.2.2 query_by_page

(根据页码分页查询数据)

-- 每页30000条数据,查询数据
SELECT t.* FROM (SELECT
	(@rowNum:=@rowNum+1) rowNum, page.pageNum, t.*
FROM t_kettle_test t, (select (@rownum :=0) ) row, (select ? pageNum) page) t
WHERE t.rowNum > (t.pageNum - 1) * 30000 AND t.rowNum <= t.pageNum * 30000

3.2.3 select_fields

(筛选想要更新的字段)

3.2.4 output_target

(将查询到的数据输出到目标表里面)


4.执行

执行成功,结果如下所示:

代码下载地址:
https://download.csdn.net/download/qq_33204709/18714766





参考地址:(文章略有改动)

https://www.cnblogs.com/greyzeng/p/5524614.html

  • 7
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不愿放下技术的小赵

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值