我正在使用 SSIS 从 Netezza 数据库获取数据并将其插入到 SQL Server 数据库中。我的查询正在运行,前 2 个查询使用数据流任务从 Netezza 获取数据(基于 ID_NUMBER
)并将其插入到 SQL Server 中。
我有 15 个不同的 ID_NUMBER
需要运行,我想一次运行一个,但我不想将 ID_NUMBER
硬编码到每次我想运行不同的 ID_NUMBER
时的 SQL 语句。
有没有办法可以循环遍历每个 ID_NUMBER
而无需在 SQL 语句中对它们进行硬编码?
最佳答案
使用 ODBC 源更新 1
根据您的评论,您正在使用 ODBC 源
在 ODBC 中,您不能使用参数(提供的链接中的逻辑相同),您必须将表达式分配给 ODBC 源
的 SqlCommand 属性
- 点击“数据流任务”
- 在“属性”选项卡中(按 F4 显示它)转到表达式
为
[ODBC Source].[SqlCommand]
属性分配类似的表达式"SELECT * FROM MyTable WHERE [id] = " + (DT_WSTR,50)@[User::id]
单击“DataFlow 任务”并将“延迟验证”属性更改为“True”
使用执行 SQL 任务 + Foreach 循环容器
- 您必须使用执行 SQL 语句并将 ID 存储在结果集中。
- 然后使用 For every 循环容器来循环 ID
- 在 foreach 循环容器内添加一个 DataFlow 任务
- 在数据流任务中使用变量中的 SQL 命令作为源,并且变量必须构建为表达式
有关分步教程,您可以引用以下链接:
关于sql-server - Select 语句从 Netezza 数据库获取数据并将其插入 SQL Server 数据库 (SSIS),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48479638/