使用ETL-Kettle实现分片查询存储
ETL实现分片查询可以分成以下几个步骤:
1, 获取分片信息 Get Slice Data
2, 循环执行程序 Loop Job
整体结构如下:

1, Get Slice Data

首先我们要确定执行计划的次数,得到一个数组 (设置计划执行次数)

语句可以参考
function get_time_slice_range(start_time date, end_time date, interval_min number) return time_range_table PIPELINED IS rec time_range_record; v_num number; v_start_time date; interval_day number; v_end_time date; BEGIN interval_day := interval_min / 24 / 60; v_num := 1; v_start_time := start_time; WHILE v_start_time < end_time LOOP if (v_start_time + interval_day) <= end_time then v_end_time := v_start_time + interval_day; else v_end_time := end_time; end if; SELECT v_num, v_start_time, v_end_time INTO rec FROM DUAL; v_num := v_num + 1; v_start_time := v_start_time + interval_day; PIPE ROW(rec); end loop; RETURN; END get_time_slice_range;
然后将序列选中(选中序列列表),并且修改时间类型的参数的Type(Kettle似乎有Bug,直接使用时间格式有问题,也许是我用的不对=。=)

然后复制一下记录,至此第一步完成

2, Loop Job
Job需要勾选 Execute every input row

Loop Job分成两部分,Set Variable和Loop Select,如下:

设置分页变量需要先从结果获取记录,然后再设置变量



最后进行循环查询 Loop Select

然后插入数据即可
浙公网安备 33010602011771号