2

尽管我在 SQL 和 C# 以及其他技术方面有丰富的经验,但我对 SSIS 非常缺乏经验。

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

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

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

我真的有几个问题。

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

更新:

来自 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 源放在数据中间流动)。

4

1 回答 1

2

尽我所能回答

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

这取决于但通常情况下,如果您的数据在数据库中,OLE DB 或 ADO.NET 源是您将其注入管道的首选组件。更好的?这取决于您的需求,但您是否有理由认为建议这样做?使用数据流的好处在于缓冲、并行、日志记录、配置等。我假设或其他原因导致您将 .NET 应用程序移动到集成服务包中,所以我想如果您重新进入这个空间,全力以赴。

脚本组件转换是在这里使用的正确工具吗?

确实。内置的网络服务的东西不及工业强度。您已经熟悉 .NET,因此可以充分利用该组件。

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

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

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

我不太明白你要求解决这个问题。为这个假人做一些例子,我会看看它是否点击。

于 2013-03-26T01:56:18.727 回答