以前项目稍微比较复杂,需要在多个不同的数据库中抽取数据,然后实现数据合并,因为数据不在同一个库中,实现合并只能利用多个表输入控件先拿到数据,然后再在Kettle中合并,使用过kettle的数据合并控件,一言难尽,当初踩了很多坑,已经忘记了,后来终于找到一个不错的方式实现了想要达到的SQL中的union功能。
下面举一个简单的例子
TB_A
aa | bb |
---|---|
1 | 11 |
TB_B
aa | bb |
---|---|
2 | 22 |
TB_C
aa | bb |
---|---|
3 | 33 |
想要实现的效果是表数据合并
Select aa,bb from TB_A
Union all
Select aa,bb from TB_B
Union all
Select aa,bb from TB_C
aa | bb |
---|---|
1 | 11 |
2 | 22 |
3 | 33 |
kettle上的实现
使用追加流实现,每一次追加流只能是两张之间,三张表需要多个追加流
追加流设置
注意
需要注意的点是追加流时,追加流的前和后都需要流数据的字段名字、字段类型和在数据流中的顺序一致,如果不一致执行会报错,实现字段类型和名字一致可以在表输入时修改(也就是SQL控制)或者是用kettle自带的字段选择修改一致。
如下图