以前项目稍微比较复杂,需要在多个不同的数据库中抽取数据,然后实现数据合并,因为数据不在同一个库中,实现合并只能利用多个表输入控件先拿到数据,然后再在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

1

2

3

4

5

6

aa bb

1 11

2 22

3 33

kettle上的实现

使用追加流实现,每一次追加流只能是两张之间,三张表需要多个追加流

追加流设置

注意

需要注意的点是追加流时,追加流的前和后都需要流数据的字段名字、字段类型和在数据流中的顺序一致,如果不一致执行会报错,实现字段类型和名字一致可以在表输入时修改(也就是SQL控制)或者是用kettle自带的字段选择修改一致。

如下图

kettle实现SQL中的union合并数据(追加流)_sql