想必大家都用过Kettle中的更新算子,接下来我来聊聊Kettle中的更新算子的具体实现。
【示例】
我们目前有两张表。第一张表(china),记录所有省份人口和GDP数据,但数据是老旧数据。
另一张表(china2021),是统计的最新2021年省份人口和GDP数据,数据是最新的,但是只有部分省份。
我们就需要根据省份名称,将2021年最新的人口和GDP数据更新至总表(china表)。
【实现思路】
1.JDBC连接china2021表,读取数据存入Map中(记录比对字段、更新字段、具体数据)。
2.JDBC连接China表,按照(1)中的Map拼接Update语句对数据进行条件更新。其SQL语法如下:
UPDATE tableName SET field1 =(CASE WHEN fileld2 = 'XXX' THEN 'XXX' ELSE field1 END)
本示例中的拼接出的具体SQL如下:
UPDATE china SET population = (CASE WHEN province = '广东' THEN 11346 WHEN province = '江苏' THEN 8051 WHEN province = '山东' THEN 10047 ELSE population END),gdp = (CASE WHEN province = '广东' THEN 110760 WHEN province = '江苏' THEN 102700 WHEN province = '73129' THEN 10047 ELSE gdp END)
实践结果我们发现,china表中广东、江苏、山东三省份对应的人口和GDP数据已更新,其他数据仍旧保持不变。
至此,我们已实现Kettle中更新算子相关功能。



