我有两个不同的系统使用的两个数据库,它们需要共享一组数据(数据流是单向的,从一个系统到另一个系统)。接收数据的系统使用SSIS包导入数据。两个数据库中包含共享数据的表的表结构和列名是相同的。
使用SSIS,我希望能够从第一个系统中的表中获取数据的子集。例如
SELECT ProductId, col2, col3, col4 from Products WHERE modifiedDate > @ThresholdDate然后,我想从这个查询中获取数据,并使用SQL merge语句根据ProductId是否匹配来添加或更新另一个数据库中的数据。
我以前在执行SQL任务中编写过merge语句,但这是可能的,因为两个数据库都在同一台服务器上。我不希望必须使用sp_addlinkedserver,我只希望有一个OLE DB Source来获取数据,并将这些数据传递给某个SSIS组件,然后我可以使用该组件来运行merge语句。
这是可能的吗?或者在运行merge语句之前,我是否需要首先将数据存储在临时表中?
发布于 2014-01-14 22:39:48
您可以使用Foreach循环容器来实现这一点,将原始查询结果放入对象变量中。然后将输出转换为单独的变量,并一次一行地运行合并查询。
但是,我想您最好的方法是创建一个临时表,正如您所提到的。将数据传输到临时表,然后从中运行合并。毫无疑问,它将会更快。
https://stackoverflow.com/questions/21114135
复制相似问题