我使用的是SQLserver 2008r2SSIS
我有来自两个不同数据库的两个数据源,在数据流任务中,我希望能够从源1中删除i位于源2中的行,并从源1输出剩余的数据。
我发现很难找到相关的数据流转换任务。
如果数据位于同一个数据库中,那么在SQL中它只是
SELECT * FROM TableA
LEFT OUTER JOIN TableB
ON TableA.name = TableB.name
WHERE TableB.id IS null
发布于 2016-12-02 14:45:47
我将使用数据流任务将所有记录从源数据库中提取到目标数据库中的暂存表中。然后用你问题中的陈述来得到我需要的数据。
根据要提取/排除的数据量,您也可以采取相反的方法。将id从目的地发送到源中的暂存表,然后以类似的方式查询要提取的行。
如果不能在源或目标中创建暂存表,则应该能够在SSIS转换中完成所有这些工作。可能是查找,也可能是合并、连接/条件拆分。我认为使用分期表方法的性能会好得多。
发布于 2016-12-04 14:44:09
如果数据库位于同一服务器上,则可以使用相同的语法添加数据库名称:
SELECT * FROM Database1.TableA AS T1
LEFT OUTER JOIN Database2.TableB AS T2
ON T1.name = T2.name
WHERE T1.id IS null
如果您的数据库位于不同的服务器上,那么您应该遵循以下步骤:
TableA
创建一个TableA
TableB
作为查找对象的源ID
列从TableA
链接到来自TableB
的ID
列上TableB
中选择任意列作为输出或
可以在sql server中创建链接服务器,并使用如下查询
SELECT * FROM Database1.TableA AS T1
LEFT OUTER JOIN Server2.Database2.TableB AS T2
ON T1.name = T2.name
WHERE T1.id IS null
了解有关创建链接服务器的更多信息
https://stackoverflow.com/questions/40933963
复制相似问题