微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

SSIS Foreach 循环将不同的 SQL Server 视图数据枚举到单个临时表中

如何解决SSIS Foreach 循环将不同的 SQL Server 视图数据枚举到单个临时表中

我正在尝试设置 SSIS 包以将多个视图数据加载到单个临时表中。所有视图具有相同的列结构,需要加载到具有相同列结构的临时表中。

目的:我们有 30 个不同的视图,每个视图包含不同的逻辑,需要输入到单个目标表中。

当前的解决方案:使用包含 30 个不同序列容器的 DFT 任务,每个视图包含简单的源和目标适配器。

所需解决方案:使用单个 Foreach 循环容器并枚举 30 个视图并将每个视图的结果加载到单个目标表中。如果将来需要,这可以帮助我们轻松扩展任务。

解决方法

找出答案:

  • 创建了两个变量。变量 1 为对象数据类型,变量 2 为字符串

  • 使用执行 SQL,编写如下示例的 SQL 语句,并将“结果集”属性设置为“完整结果集”,在结果集属性上为结果名称 0 分配对象类型变量。

    Select 'select * from view1' as SQL_Code UNION ALL
    Select 'select * from view2' as SQL_Code 
    
  • 添加了一个带有集合的 Foreach 循环作为“Foreach ADO 枚举器”

  • 在 Enumerator Configuration 下,选择 Object 类型的 Variable1 并将 Enumeration 模式设置为“Rows in the First Table”

  • 在 Foreach 循环变量映射中,选择 Variable2,它是字符串数据类型。

  • 在 Foreach 循环内部,添加了一个 DFT 任务,并使用了一个简单的源和目标适配器。在源适配器中,选择 SQL Command from Variable 选项并选择 Variable2 作为源。然后将源适配器和目标适配器的 ValidateExternalMetadata 属性设置为“False”,并将 DFT 任务的 DelayValidation 属性设置为 True。

现在,当我执行包时,执行 SQL 任务会为我在执行 SQL 任务的 sql 语句中编写的每个视图加载对象变量的 Variable1,每行作为“Select * from View”

Foreach 循环,枚举每一行并将“Select * from View1”语句加载到 Variable1,这将是每次加载的源 SQL 命令。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。