每个单行输入从脚本组件输出多行

时间:2013-03-26 00:10:38

标签: ssis

我对SSIS缺乏经验,尽管我在SQL和C#以及其他技术方面有很多经验。

我正在将我作为独立c#console应用程序编写的任务转换为SSIS包。

我有一个OLEDB输入源,它是一个SQL命令,它收集数据库中的某些数据,然后我将其输入到脚本组件转换中。我使用输入字段作为基于OAuth的restful Web服务的参数,这需要很多自定义C#代码才能完成。 Web服务返回一个XML respose,其中包含必须为每个输入行输出的许多行。

我对脚本转换如何工作的理解是,它或多或少是一行,一行。

我真的有几个问题。

  1. 以这种方式使用输入源是个好主意吗?或者有更好的方法将输入行提供给我的Web服务吗?
  2. 脚本组件是否会转换正确的工具?我无法使用普通的Web服务,因为Web服务不是基于SOAP或WCF的,并且在请求中需要OAuth。 (或者有没有办法以这种方式使用Web服务组件?)
  3. 如何为每个输入行输出多行?
  4. SSIS是否支持获取XML结果(包含多行)的方法,并将它们映射到脚本转换中输出字段的行?我知道有一个XML输入源,但事实并非如此。我正在考虑采用XML输入并吐出数据行的东西
  5. 更新:

    来自Web服务的数据看起来像这样(额外的遗漏):

    <user>
      <item>
        <col1>1</col1>
        <col2>2</col2>
        <col3>3</col3>
      </item>
      <item>
        <col1>1</col1>
        <col2>2</col2>
        <col3>3</col3>
      </item>
      ....
    </user>
    

    基本上,SQL DataSource返回用户的数据集。用户数据集被输入脚本并用作Web服务调用的参数。 Web服务调用返回一组XML结果,这些结果具有必须从脚本输出的多个“行”数据。

    在上面的数据中,脚本的输出将是输入源中提供的每个用户的多行col1,col2和col3。我需要一种方法来提取这些元素,并将它们放入输出缓冲区中的每列xml数据的列中。或者,一种简单地使xml成为脚本输出并将输出提供给另一个组件以将xml解析为行的方法(就像XML源一样,但显然你不能将XML源放在数据中间)流动)。

1 个答案:

答案 0 :(得分:2)

回答我的意思

以这种方式使用输入源是个好主意吗?或者有更好的方法将输入行提供给我的Web服务吗?

这取决于但通常,如果您的数据位于数据库中,则OLE DB或ADO.NET源是将其注入管道的首选组件。更好?这取决于您的需求,但有没有理由认为是明智的?使用数据流的好处是内置缓冲,并行,日志记录,配置等。我假设或其他一些原因导致您将.NET应用程序移动到Integration Services包中,所以我想如果你'重新进入这个空间,全力以赴。

脚本组件是否会转换正确使用的工具?

当然。内置的网络服务是低于工业强度的。您已熟悉.NET,因此您可以充分利用该组件。

如何为每个输入行输出多行?

是。您对1:1输入的假设:输出仅用于默认行为。默认情况下,脚本组件是同步的,因此您可以观察到,每一行都有一个输出。但是,通过将脚本组件更改为asynchronous组件,您可以将1B行转换为单行输出,或者让1行源生成N行输出。我不得不为物料清单类型问题做后者 - 我会收到一个父ID,我必须查找与父项关联的所有子行。无论如何,链接的MSDN文章描述了如何使其异步。

SSIS是否支持获取XML结果的方法

我不太清楚你要求解决这个问题。假设这个假人的一些例子,我会看它是否点击。