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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SSIS - 将Excel与数据库进行比较相关的知识,希望对你有一定的参考价值。

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

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

答案

Using 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(),你可以在我提供的链接中找到更多有关这些方法的信息


Using SSIS

使用合并加入

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

有关更多信息,请参阅我在How Intersect and Except result in SSIS的回答

使用查找转换

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

另一答案

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

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

以上是关于SSIS - 将Excel与数据库进行比较的主要内容,如果未能解决你的问题,请参考以下文章

尝试将 Vlookup 片段添加到我的 Excel 宏

将数据从平面文件加载到 Sql Server 表,并使用 SSIS 导出到 excel

SSIS错误导入Excel日期(截断错误)

SSIS 和 64 位 Excel

如何在SSIS中将大型Excel文件拆分为多个小文件?

SSIS - 将数据从 Excel 导出到 sql 表