SSIS - 比较 Excel 与数据库

SSIS - Compare Excel With Database

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

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

您可能要考虑做一个 UPSERT(更新 existing/Insert 新)。插入匹配项,不匹配项重定向到其他地方。

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

使用 T-SQL

您可以在查询中使用 OPENROWSET() 函数从 excel 中读取数据,并且您可以将其与 SQL table 连接起来而不需要暂存 tables.

查询示例

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 操作。

有关更多信息,请参阅我在

的回答

使用查找转换

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