尽管我在 SQL 和 C# 以及其他技术方面有丰富的经验,但我对 SSIS 非常缺乏经验。
我正在将我作为独立 c# 控制台应用程序编写的任务转换为 SSIS 包。
我有一个 OLEDB 输入源,它是一个 SQL 命令,它收集数据库中的某些数据,然后我将这些数据输入脚本组件转换。我将输入字段用作基于 OAuth 的 RESTful Web 服务的参数,这需要大量自定义 C# 代码来完成。Web 服务返回一个 XML 响应,其中包括必须为每个输入行输出的许多行。
我对脚本转换如何工作的理解是,它或多或少是一排进一排。
我真的有几个问题。
- 以这种方式使用输入源是个好主意吗?或者有没有更好的方法将输入行输入到我的 Web 服务中?
- 脚本组件转换是在这里使用的正确工具吗?我不能使用普通的 Web 服务,因为 Web 服务不是基于 SOAP 或 WCF 的,并且在请求中需要 OAuth。(或者有没有办法以这种方式使用 Web 服务组件?)
- 如何为每个输入行输出多行?
- 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 源放在数据中间流动)。