ETL设计之-Foreach 循环容器(Foreach 循环容器之(Foreach ADO 枚举器))

上一篇介绍了Foreach 循环容器之(Foreach 文件枚举器),主要是关于多文件批量导入数据仓库的问题。今天介绍的还是Foreach 循环容器,主要介绍Foreach ADO 枚举器,循环表中的每一条记录。

介绍需求:

    想更新某一个表的状态,条件另一个表是否有这条记录。(如果用T-SQL执行相当简单,建立关系后更新即可)

执行环境:

  1. --Email基本信息表   
  2. CREATE TABLE EMailTest(ID INT, NAME VARCHAR(20),Email Nvarchar(50))
  3. GO
  4. INSERT INTO EMailTest(ID,NAME,Email)
  5. SELECT 1,'abc','[email protected]'
  6. UNION ALL
  7. SELECT 2,'cde','[email protected]'
  8. UNION ALL
  9. SELECT 3,'XYZ','[email protected]'
  10. go
  11. --Email类型表
  12. CREATE TABLE EmailType(ID INT,EmailType Nvarchar(50))
  13. GO
  14. INSERT INTO EmailType(ID,EmailType)
  15. SELECT 1,''
  16. UNION ALL
  17. SELECT 2,''
  18. GO

效果:

    使用SSIS中的执行SQL任务、Foreach 循环容器更新Email类型表的状态。

 

步骤:

    a) 获取EmailTest表的所有数据集

ETL设计之-Foreach 循环容器(Foreach 循环容器之(Foreach ADO 枚举器))_第1张图片

       b)配置数据的结果集


ETL设计之-Foreach 循环容器(Foreach 循环容器之(Foreach ADO 枚举器))_第2张图片

       c)配置Foreach循环容器,选择枚举器,(Foreach ADO 枚举器、ADO数据源MyDataSet)

ETL设计之-Foreach 循环容器(Foreach 循环容器之(Foreach ADO 枚举器))_第3张图片

 

         d)新建变量映射(此处:用户ID)

ETL设计之-Foreach 循环容器(Foreach 循环容器之(Foreach ADO 枚举器))_第4张图片

   e)在 Foreach 循环容器中拖入一个执行SQL任务,配置如下图:

 

 

ETL设计之-Foreach 循环容器(Foreach 循环容器之(Foreach ADO 枚举器))_第5张图片相关更新的SQL 语句为:

  1. UPDATE EmailType SET EmailType='修改' WHERE ID=?

      f)配置Foreach 循环容器中SQL任务中的参数映射。如下图:

          注意:参数如果是int,在数据类型选择LONG类型,否则会报参数失败。导致更新失败或者不更新。

ETL设计之-Foreach 循环容器(Foreach 循环容器之(Foreach ADO 枚举器))_第6张图片    g)整个ETL过程如下图:

 

ETL设计之-Foreach 循环容器(Foreach 循环容器之(Foreach ADO 枚举器))_第7张图片

    h) 整个流程图如下:

    

 

    i)查看执行结果。

 

ETL设计之-Foreach 循环容器(Foreach 循环容器之(Foreach ADO 枚举器))_第8张图片

你可能感兴趣的:(sql,数据仓库,email,任务,Go,SSIS)