我将如何在 SSIS 数据流中实现此查询?

Posted

技术标签:

【中文标题】我将如何在 SSIS 数据流中实现此查询?【英文标题】:How would I implement this query in an SSIS dataflow? 【发布时间】:2014-05-21 20:08:10 【问题描述】:

所以我在执行 SQL 任务中做了一些事情,但我的项目经理宁愿在数据流任务中看到它。

INSERT INTO [dbo].[lookup_product]
       ([dim_global_data_source_id]
       ,[source_product]
       ,[source_product_type]
       ,[source_grade]
       ,[source_gauge]
       ,[source_width]
        )

SELECT distinct 
       dim_global_data_source_id,
       product_desc,
       product_type,
       grade,
       gauge,
       size1

FROM Staging_informix_Coil_is
where not exists 
(select source_product 
 from lookup_product 
 where lookup_product.dim_global_data_source_id  =           Staging_informix_Coil_is.dim_global_data_source_id 
 and isnull(lookup_product.source_product,'') =  isnull(Staging_informix_Coil_is.product_desc,'')
 and lookup_product.source_product_type       = Staging_informix_Coil_is.product_type
 and isnull(lookup_product.source_grade,'')   = isnull(Staging_informix_Coil_is.grade,'')
 and isnull(lookup_product.source_gauge,0)    = isnull(Staging_informix_Coil_is.gauge,0)
 and isnull(lookup_product.source_width,0)    = isnull(Staging_informix_Coil_is.size1,0)
)  

`

这就是查询。我在工作流程中需要这个。有人帮助我或给我一个样品

【问题讨论】:

你卡在哪里了? 在心理上解析您的查询,您似乎正在尝试将数据加载到一个表中,我希望它不存在。您是否需要检测源和目标之间的变化,或者检查业务密钥是否足够? Bingle Andy Leonard ssis 增量负载模式或通过此处的 ssis 问题更努力地查找示例 所有表都存在。我基本上只需要通过查找来查找我的暂存表。如果暂存表的值在查找中不存在,则填充查找。我想我卡住的地方是如何引用查找并检查记录是否存在。然后插入这些记录。 实施查找解决方案后,请确保对两种方法的性能采取一些良好的衡量标准,如果有任何注意事项,请提交给您的项目经理。 【参考方案1】:

我和你的项目经理一起做这个。我会创建一个数据流任务。第一个组件是 OLE DB 源,仅包含您的第一个 SELECT(无 WHERE 子句)。

下一个组件是 Lookup,从 lookup_product 中选择您需要匹配的列。在 Columns 选项卡上,我将匹配 WHERE 子句中的列。在常规选项卡上,我会将其设置为将行重定向到不匹配输出。

最后一个组件是一个 OLE DB 目标,指向 lookup_product 表。我会使用 No Match 输出将其连接到 Lookup。

【讨论】:

以上是关于我将如何在 SSIS 数据流中实现此查询?的主要内容,如果未能解决你的问题,请参考以下文章

如何在SSIS中将大型Excel文件拆分为多个小文件?

将存储的数据用于查询 SSIS

SSIS - 计算期初和期末余额

SSIS - 如何将电源查询的输出导入数据流中的另一个电源查询

使用SSIS从SQL Server 2005中的平面文件导入时如何保留NULL值

SSIS - 将Excel与数据库进行比较