0

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

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

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

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

4

1 回答 1

0

图答案:

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

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

    Select 'select * from view1' as SQL_Code UNION ALL
    Select 'select * from view2' as SQL_Code 
    
  • 添加了一个 Foreach 循环,其中 Collection 为“Foreach ADO 枚举器”

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

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

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

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

Foreach 循环,枚举每一行并将“Select * from View1”语句加载到变量 1,变量 1 将成为每次加载的源 SQL 命令。

于 2021-01-25T04:50:20.437 回答