数据流任务的Foreach循环容器

Pra*_*tik 4 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

pra*_*een 6

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

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

     Name: TimeValue  DataType=Int32
    
    Run Code Online (Sandbox Code Playgroud)
  2. 使用ForEach循环并在集合选项卡中选择Foreach Item枚举器

新栏目

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

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

制图

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

SQL查询

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

映射参数

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

希望这有助于你.