数据流任务的Foreach循环容器

时间:2012-06-13 05:22:08

标签: sql sql-server oracle ssis

我想从oracle DB导入近1200万条记录,但由于SSIS内存缓冲区问题需要每年迭代我的数据流任务,即2005年至2012年(7次)。我如何使用foreach我的oracle查询来逐年获取数据。

查询

SELECT * FROM EMP_RECORDS_DETAILS WHERE to_char(JOIN_DT,'YYYY')=2005

1 个答案:

答案 0 :(得分:5)

我使用Sql Server解决了上述问题。因此,只需要更改的是Select查询

  1. 首先创建一个变量来存储每年的日期。

     Name: TimeValue  DataType=Int32
    
  2. 使用ForEach循环并在集合选项卡中选择Foreach Item枚举器

  3. New Column

    1. 单击Columns选项卡并创建一个新的数据类型列int

    2. 在变量映射中映射上面创建的变量。

    3. Mapping

      1. 在数据流内部使用oledb目的地并在数据访问模式下选择sql命令。应该更改where子句中的查询并尝试选择列而不是给*。
      2. SQL Query

        1. 单击参数选项卡映射为foreach循环创建的参数
        2. Mapping Paramters

          如果之前未知日期的值,则可以在foreach循环之前使用execute sql task,并仅从表中选择dateTime列值并将其存储在变量中,并在foreach循环中使用来自变量枚举器的Foreach在集合选项卡中,选择在上面执行sql任务中创建的变量。

          希望这有助于你。