如果我有一个从Excel工作簿中读取数据的SSIS Excel源代码,有什么方法可以查询返回的每一行的SQL表吗?
实施例: Excel Source返回EmployeeID,EmployeeName和Department。现在,对于Excel源返回的每一行,是否可以在Excel Sever表中查询EmployeeCategory,其中Excel行中的EmployeeID与EmployeeCategory SQL表中的EmployeeID匹配?
这样我最终会得到格式为
的结果集EmployeeID(Excel),EmployeeName(Excel),Department(Excel),EmployeeCategory(SQL Table)
答案 0 :(得分:2)
当然可以。
这正是SSIS查找转换所做的。
看看这里:https://www.youtube.com/watch?v=WMfuXYsWZqM
我应该补充一点,出于性能原因,您实际上不希望对数据流中的每条记录执行新查询 - 这将非常慢。然而,SSIS查找转换的作用是创建SQL Server表的内存缓存,然后为内存中的每条记录查找EmployeeCategory的值,这非常快。
如果您确定要对每条记录实际执行查询,则Lookup Transformation组件具有一个允许它在没有缓存的情况下运行的属性。如果您想要更多的灵活性(可能会带来更大的性能损失),您可以使用OLE DB命令转换,让您为数据流中的每条记录指定要执行的查询。