有结构相同的分表 A 及总表 B,将表 A 数据汇总到表 B。汇总时,根据条件,若 A 数据存在于 B 表中,则更新,若不存则插入。我们可采用 merge into 语句,它可以同时实现 update 和 insert 的功能,动态拼接成 merge into 语句让数据库执行操作。
若用 java 来实现,由 merge into 的语法特点知,需要对 on 条件,insert,update 进行多处循环拼接字段,update 处还需要去掉主键字段或索引字段,拼接 SQL 语句的一系列操作并不容易。用其它开发语言也面临类似的问题。
使用 SPL 对字段序列循环处理,实现相对容易且代码精简。
下面以同结构的源表 P_HOUSE 向目标表 T_HOUSE 数据汇总说明,其中由 ID 与 NODE_ID 组成主键。
P_HOUSE:
ID | NODE_ID | NAME | ADDRESS | CREATE_DATE |
1 | 100 | A | A1 | 2018-02-06 |
1 | 300 | A | A10 | 2018-04-06 |
2 | 100 | B | B2 | 2018-03-01 |
2 | 300 | B | B20 | 2018-01-01 |
3 | 100 | C | C3 | 2018-03-04 |