从平面文件插入/更新表中的行

时间:2012-03-28 20:02:49

标签: sql-server-2008 ssis flat-file

我有几个text和excel文件,我需要将数据导入SQL Server表。现在我的问题是这个表可能已经与我从平面文件或excel文件导入的行相同。

那么,我如何验证和重定向表中已存在的那些行。

例如:

平面文件

6, test1, bak
7, test2, nim
8, test3, kol

表_产品

Id (*Not a primary key*) Name code
1                     ttest  hyt
2                     jtest  jte
7                     test2  nim
6                     ttt    bak

因此,从平面文件第6行将更新(因为其中一个列值已更改),第7行将不会插入/更新(因为它已经存在),并且将插入第8行。

2 个答案:

答案 0 :(得分:2)

我相信你知道如何配置oleDBSource和OleDBDestination,对吧?唯一的区别是,在中间你必须添加一个Lookup Transformation谁将检查该行是否存在,如果存在,它将把数据流发送到你的目的地。

在互联网上查看有关如何使用的简单示例,但请注意,此组件的行为已从SSIS 2005更改为SSIS 2008,因此请务必查看2008示例

答案 1 :(得分:1)

这里常见的方法是将原始数据加载到与平面文件格式相同的加载表中,然后使用TSQL进一步操作并将数据插入到最终报表中。在这种情况下,您可以使用MERGE statement,例如。