Sql server Select语句从Netezza数据库获取数据并插入SQL Server数据库(SSIS)

Sql server Select语句从Netezza数据库获取数据并插入SQL Server数据库(SSIS),sql-server,ssis,etl,netezza,Sql Server,Ssis,Etl,Netezza,我正在使用SSI从Netezza数据库获取数据,并将其插入SQL Server数据库。我让查询正常工作,前两个查询使用一个数据流任务从Netezza(基于ID\u编号)抓取数据并插入SQL Server 我有15个不同的ID\u编号s要运行,我想一次运行一个,但我不想每次运行不同的ID\u编号时都将ID\u编号硬编码到SQL语句中 是否有一种方法可以循环使用每个ID\u编号,而无需在SQL语句中对其进行硬编码?使用ODBC源代码更新1 根据您的评论,您正在使用ODBC源代码 在ODBC中,您不能

我正在使用SSI从Netezza数据库获取数据,并将其插入SQL Server数据库。我让查询正常工作,前两个查询使用一个数据流任务从Netezza(基于
ID\u编号
)抓取数据并插入SQL Server

我有15个不同的
ID\u编号
s要运行,我想一次运行一个,但我不想每次运行不同的
ID\u编号
时都将
ID\u编号
硬编码到SQL语句中

是否有一种方法可以循环使用每个
ID\u编号
,而无需在SQL语句中对其进行硬编码?

使用ODBC源代码更新1 根据您的评论,您正在使用ODBC源代码

在ODBC中,您不能使用参数(与提供的链接中的逻辑相同),必须为
ODBC源的SqlCommand属性指定一个表达式

  • 单击DataFlow任务
  • 在“属性”选项卡(按F4键显示)中,转到“表达式”
  • [ODBC Source].[SqlCommand]
    属性指定类似的表达式

    "SELECT * FROM MyTable WHERE [id] = " + (DT_WSTR,50)@[User::id]
    
  • 单击数据流任务并将
    Delay Validation
    属性更改为
    True


  • 使用执行SQL任务+Foreach循环容器
  • 您必须使用Execute SQL语句并将ID存储在结果集中
  • 然后使用For-each循环容器在ID上循环
  • 在foreach循环容器中添加一个数据流任务
  • 在数据流任务中,使用变量中的SQL命令作为源,并且变量必须构建为表达式
  • 有关分步教程,请参考以下链接:


    每次必须指定
    ID\u编号时
    ?或者在处理之前从表中提取此ID_编号??从ID_编号='S12345'的表中选择ID_编号。是否有一种方法可以单独循环每个ID_编号?比如通过数组或其他方式传递它们?您正在从表中选择ID_编号,然后需要循环结果,并为每个ID_编号执行数据流任务?我将处理此问题,看看我能做些什么。我会让你知道我的结果。非常感谢你,哈迪!在这种情况下,@Hadi的链接正是您现在想要的,因为我使用的是ODBC连接,而不是OLEDB。ODBC数据源在源编辑器中没有参数按钮。您必须使用表达式,请参考表达式中的上面链接。您必须使用以下逻辑
    “从MyTable中选择*,其中[id]=”+@[User::id]
    ,只需单击数据流任务,在属性选项卡中,转到表达式,并将表达式指定给
    [ODBC Source].[SqlCommand]
    propertyHadi,你真是个天才!我在Stackoverflow上从你那里学到的东西比我在大学上的两门SQL课学到的还要多。非常感谢你!