首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >ETL中DataflowTask中的循环控制

ETL中DataflowTask中的循环控制
EN

Stack Overflow用户
提问于 2010-04-01 19:13:41
回答 2查看 1.1K关注 0票数 0

作为SSIS和ETL流程的新手,我想知道是否有任何方法可以遍历DataFlowTask中的记录集,并将每一行(从该行派生参数)传递到存储过程( ETL阶段的下一步)。将行传递到存储过程后,我希望每次迭代的结果都写入一个表。有人知道怎么做吗?

谢谢。

EN

回答 2

Stack Overflow用户

发布于 2010-04-01 19:40:51

SSIS数据流中的任何OLEDB命令转换(用于执行数据库命令)在每个输入行中执行一次-我认为这是您想要的行为。更多细节here

在您的方案中,您需要的最低要求是:

代码语言:javascript
运行
复制
Data Source -> OLEDB Command -> Data Target

注意,这不会带来很好的性能--尝试重构您的存储过程以一次性操作整个输入集可能更好(在这种情况下,您将在控制流中使用执行SQL任务)。

票数 2
EN

Stack Overflow用户

发布于 2010-04-02 06:36:48

以下结构将起作用:

  1. 创建对象变量。(recordset_object)
  2. Create字符串变量。在控制流中执行“(record_string)
  3. Create SQL Command”。在"Execute SQL Command“中,在”General“选项卡中,将result Set = Full Result set设置为Full Result Set。在"Execute SQL Command”中,在Result set选项卡中,将Result Name =0和Variable Name = (recordset_object).
  4. Create a "Foreach Loop Container",并在"Execute SQL Command“和"Foreach Loop Container".
  5. In

  1. 之间创建一个优先约束。在集合选项卡中设置Enumerator = Foreach ADO Enumerator.
  2. In "Foreach循环容器“,在集合选项卡中设置ADO对象源变量= User::recordset_object.
  3. In "Foreach循环容器”,在集合选项卡中设置枚举模式=User::recordset_object.
  4. In在第一个表中。
  5. 在"Foreach循环容器“中,在变量映射选项卡中设置变量= User::record_string和索引=0。在控制流的设计表面中的"Foreach循环容器”中设置
  6. ,添加一个"Execute SQL Command".
  7. For子“执行SQL命令,你可以(13)设置SQLStatement使用一个变量来生成你想要执行的代码,或者(14)映射到一个参数中,或者(15)使record_string成为一个由代码执行的SQL命令。
  8. 如果你使用一个变量,那么它可能类似于User::sql_code_string,它的值可能类似于"EXEC schema.some_stored_procedure '”+ @record_string + "';“。然后,您可以在子"Execute SQL Command“= Variable的General选项卡中设置SQLSourceType,并在参数映射选项卡中的子"Execute SQL Command”中将SQLStatement设置为User::sql_code_string.
  9. If。在子"Execute SQL Command“的”General“选项卡中,将SQLStatement设置为"EXEC schema.some_stored_procedure?”。
  10. 类似于13,但您可以执行User::record_string,而不是创建单独的变量。如果您的数据集返回的record_string内容是您想要执行的查询,则这是可行的。

我通常更喜欢这种方法,而不是@Ed的解决方案,您可以为每个记录包含额外的步骤。例如,我经常在我的控制流中添加额外的对象,如脚本任务、数据流和执行SQL命令。从我的角度来看,这是一种更灵活、更容易理解的方法,但@Ed的解决方案绝对符合您问题的标准。

祝你好运,如果你需要澄清说明,请告诉我。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2559931

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档