选择语句从Netezza数据库中获取数据并插入SQL Server数据库(SSIS)

时间:2018-01-27 19:22:27

标签: sql-server ssis etl netezza

我使用SSIS从Netezza数据库中获取数据并插入SQL Server数据库。我有查询工作,前两个查询使用数据流任务从Netezza中获取(基于ID_NUMBER)并插入到SQL Server中。

我有15个不同的ID_NUMBER要运行,我想一次运行一个,但我不想将ID_NUMBER硬编码到每个SQL语句中我希望运行不同的ID_NUMBER

有没有办法可以循环遍历每个ID_NUMBER而不在SQL语句中对它们进行硬编码?

1 个答案:

答案 0 :(得分:2)

使用ODBC源更新1

根据您的评论,您使用的是ODBC源

在ODBC中,您不能使用参数(提供链接中的相同逻辑),您必须将表达式分配给ODBC Source

的SqlCommand属性
  1. 单击DataFlow任务
  2. 在“属性”选项卡中(按F4显示)转到表达式
  3. 将类似的表达式分配给[ODBC Source].[SqlCommand]属性

    "SELECT * FROM MyTable WHERE [id] = " + (DT_WSTR,50)@[User::id]
    
  4. 点击DataFlow任务,将Delay Validation属性更改为True

  5. 使用执行SQL任务+ Foreach循环容器

    1. 您必须使用执行SQL语句并在结果集中存储ID。
    2. 然后使用For each循环容器循环ID
    3. 在foreach循环容器内添加一个DataFlow任务
    4. 在Dataflow任务中,使用来自变量的SQL命令作为源,并且必须将变量构建为表达式
    5. 有关循序渐进教程,请参阅以下链接: