从多个工作表将数据复制到SQL表时重复

时间:2014-06-13 14:21:18

标签: sql excel talend

我必须将多个Excel工作表中的数据复制到单个SQL表中。

Excel输入: Sheet1的列:fname a,b。 lname c,d。 (2排) Sheet2的专栏:city boston,austin,state ma,tx。 (2排)

我的输出(tMSSqlOutpout)有4行而不是2行。 a b boston ma,a a a tt tx,b b boston ma,b d austin tx。

期望的输出:波士顿,b奥斯汀tx。 (仅限2行)

我该如何管理?

enter image description here enter image description here

1 个答案:

答案 0 :(得分:1)

根据评论,您没有自然密钥来加入这两个数据集。相反,您可以为每个数据集生成一个序列,该序列对于两个数据集都会相等地增加,并且等同于作为每个数据集上的行号。

首先,这应该设置关于数据状态的警钟,以及如何确保一个数据集中的行n明确对应于另一个数据集中的行n。如果没有添加正确的密钥,它会被严重规范化,并且假设由此产生的数据集准确无误是非常危险的。

但是,如果绝对必须这样做,那么您应该为每个数据集分配Numeric.sequence。您可以在加入tMap之前的tMap中执行此操作:

Apply a sequence to the data set

请注意"s1"的{​​{1}}参数。如果你在其他地方重复使用它,那么它将增加这一个,而不是从1开始,所以通常你会想要为你的工作中的每个序列选择一个唯一的名称(虽然很明显有一些情况下,增加先前定义的序列是你想要的)。

一旦定义了具有相同起始编号(第二个参数)和相同增量编号(第三个参数)的唯一序列,那么您应该能够在这些实例上创建连接:

Then inner join on the sequences