4

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

询问

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

4

1 回答 1

6

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

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

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

新列

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

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

映射

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

SQL 查询

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

映射参数

如果之前不知道日期的值,那么您可以在 foreach 循环之前使用执行 sql 任务,并从表中仅选择 dateTime 列值并将其存储在一个变量中,并在 foreach 循环中使用集合中的变量枚举器中的 Foreach选项卡并选择在上面执行 sql 任务中创建的变量。

希望这对你有帮助。

于 2012-06-13T06:23:14.633 回答