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]
您可以参考以下链接了解更多信息:
- t-sql, sql table inner join spreadsheet
- SQL Export To Excel
- How to import data from Excel to SQL Server
- How to use Excel with SQL Server linked servers and distributed queries
注意:还有其他方法如OPENDATASOURCE()
或OPENQUERY()
或创建链接服务器,但我试过的是OPENROWSET()
,你可以找到更多我提供的链接中有关这些方法的信息
使用 SSIS
使用合并联接
在 SSIS 中,您可以创建使用 Merge Join
来执行 LEFT JOIN
和 INNER JOIN
操作。
有关更多信息,请参阅我在
的回答
使用查找转换
或者你可以使用 Lookup 转换来执行连接 (Merge 连接在 JOIN 上有更好的性能),只需参考以下 Link:
我有一个 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]
您可以参考以下链接了解更多信息:
- t-sql, sql table inner join spreadsheet
- SQL Export To Excel
- How to import data from Excel to SQL Server
- How to use Excel with SQL Server linked servers and distributed queries
注意:还有其他方法如OPENDATASOURCE()
或OPENQUERY()
或创建链接服务器,但我试过的是OPENROWSET()
,你可以找到更多我提供的链接中有关这些方法的信息
使用 SSIS
使用合并联接
在 SSIS 中,您可以创建使用 Merge Join
来执行 LEFT JOIN
和 INNER JOIN
操作。
有关更多信息,请参阅我在
使用查找转换
或者你可以使用 Lookup 转换来执行连接 (Merge 连接在 JOIN 上有更好的性能),只需参考以下 Link: