SSIS - 将Excel与数据库进行比较

时间:2017-12-14 04:53:30

标签: sql-server excel ssis sql-server-2008-r2 ssis-2008

我有一个SQL Server 2008 R2数据库我在其中有几个表。我将以excel文件格式每天或每周为这些表格获取新数据和数据更新。我使用SSIS将excel文件加载到临时表,然后将此临时表记录与主表进行比较以查找更改(因为我需要在更新更改之前进行一些审核)

SSIS中是否有任何方法可以直接将excel文件记录与Master表进行比较?即不将它们存储到临时表

2 个答案:

答案 0 :(得分:1)

使用T-SQL

您可以在查询中使用OPENROWSET()函数从Excel中读取数据,并且可以将其与SQL表连接,而无需登台表。

查询示例

SELECT * FROM AmenityData As a
INNER JOIN  TypesToGroups As b
ON a.ClassCode =  b.FacilityTypeID
INNER JOIN Groups As c
ON b.GroupID = c.GroupID
INNER JOIN  OPENROWSET ('Microsoft.Jet.OLEDB.4.0', 'Excel 8.0;Database=C:\postaldistricts.xls;HDR=YES', 'SELECT *    FROM [Sheet1$]') As d
ON d.[PostalDistricts] = a.[PostalDistrict]

您可以参考以下链接获取更多信息:

注意:还有其他方法,如OPENDATASOURCE()OPENQUERY()或创建链接服务器,但我尝试的是OPENROWSET(),您可以找到有关这些方法的更多信息在我提供的链接中

使用SSIS

使用合并加入

在SSIS中,您可以创建使用Merge Join来执行LEFT JOININNER JOIN操作。

有关更多信息,请参阅How Intersect and Except result in SSIS

上的答案

使用查找转换

或者你可以使用Lookup转换来执行连接(合并连接在JOIN上有更好的性能),只需参考以下链接:

答案 1 :(得分:0)

您可能需要考虑进行UPSERT(更新现有/插入新)。将插入匹配项,并将不匹配项重定向到其他位置。

http://rad.pasfu.com/index.php?/archives/46-SSIS-Upsert-With-Lookup-Transform.html

相关问题