首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >当Id存在于另一组时,SSIS从一个集合中移除结果

当Id存在于另一组时,SSIS从一个集合中移除结果
EN

Stack Overflow用户
提问于 2016-12-02 14:00:44
回答 2查看 265关注 0票数 2

我使用的是SQLserver 2008r2SSIS

我有来自两个不同数据库的两个数据源,在数据流任务中,我希望能够从源1中删除i位于源2中的行,并从源1输出剩余的数据。

我发现很难找到相关的数据流转换任务。

如果数据位于同一个数据库中,那么在SQL中它只是

代码语言:javascript
运行
复制
SELECT * FROM TableA
LEFT OUTER JOIN TableB
ON TableA.name = TableB.name
WHERE TableB.id IS null
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-12-02 14:45:47

我将使用数据流任务将所有记录从源数据库中提取到目标数据库中的暂存表中。然后用你问题中的陈述来得到我需要的数据。

根据要提取/排除的数据量,您也可以采取相反的方法。将id从目的地发送到源中的暂存表,然后以类似的方式查询要提取的行。

如果不能在源或目标中创建暂存表,则应该能够在SSIS转换中完成所有这些工作。可能是查找,也可能是合并、连接/条件拆分。我认为使用分期表方法的性能会好得多。

票数 0
EN

Stack Overflow用户

发布于 2016-12-04 14:44:09

如果数据库位于同一服务器上,则可以使用相同的语法添加数据库名称:

代码语言:javascript
运行
复制
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链接到来自TableBID列上
  • TableB中选择任意列作为输出
  • 配置查找对象错误输出以忽略失败(如果找不到连接值,则返回空)
  • 添加一个条件拆分,从在查找对象中标记为输出的列中筛选空值。
  • 将此输出链接到目标

可以在sql server中创建链接服务器,并使用如下查询

代码语言:javascript
运行
复制
SELECT * FROM Database1.TableA AS T1
LEFT OUTER JOIN Server2.Database2.TableB AS T2
ON T1.name = T2.name
WHERE T1.id IS null

了解有关创建链接服务器的更多信息

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40933963

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档