比较SSIS中的两个源和更新sql server表?

时间:2011-06-21 13:51:26

标签: ssis

我有excel源码和sql server表。

Excel源列

 Mno    Price1  Price2
 111     10      20
 222     30      25
 333     40      30
 444      34      09
 555      23      abc 

Sql server Table

产品表名称

  PId    Mno    Sprice   BPrice
    1      111    3        50
    2      222    14        23
    3      444    32       34
    4      555    43       45  
    5      666    21       67 

我想比较excel源Mno(型号)和sql server产品表Mno(型号),如果它相同我想更新Sql server产品表SPrice和Bprice。

请告诉我我想做的步骤是什么?

我也想验证excel表,因为在excel Price2列中有字符串值

如果是字符串值我想发送邮件哪个行数据错误。

我是SSIS的新手,所以请告诉我详情。

3 个答案:

答案 0 :(得分:1)

在源中读取新数据,对现有数据使用查找组件。直接行匹配oledb命令以进行更新,以及不匹配插入的目标(如果要输入新产品)。

答案 1 :(得分:0)

我个人认为最简单的方法是使用数据流将excel文件放入临时表,并在需要时进行任何清理。然后,作为下一步,控制流具有执行更新的执行SQl任务。或者,如果记录是新的,则需要更新或插入,请在执行SQl任务中使用Merge语句。

答案 2 :(得分:0)

您可以将合并连接转换与完全外连接一起使用(记住在输入到合并连接转换之前对数据集进行排序),然后将输出转到条件拆分转换。条件性拆分转换可以确定是否需要更新,插入或删除行,并将流引导到适当的转换以执行此操作。

这不是我的头脑,可能会有一个更简单的变换。我差不多有一年没有机会与SSIS合作了,所以我可能会有点生疏。