使用 SSIS 将表数据的 XML 表示提取到文件中

urb*_*ave 4 xml sql ssis

我正在尝试使用 SSIS 将查询结果集的 XML 表示提取到文本文件中。我的查询当前成功提取了我在 SSMS 中运行时所需的确切 XML 输出。我已经尝试了我能找到的所有技巧,以在 SSIS 包中使用此结果集来创建文件。

使用数据流将 OLE 源移植到平面文件不起作用,因为 XML 查询的输出被视为 TEXT,而 SSIS 无法将 TEXT、NTEXT 或 IMAGE 推送到文件目标。

我尝试然后执行 SQL 任务来填充用户变量,然后使用脚本任务(使用 C# 编写)将此用户变量的内容写入文件输出,但用户变量始终为空。我不知道,但我怀疑这是因为 XML 被视为 TEXT 或 IMAGE 而用户变量不处理这个。

查询格式如下: SELECT * FROM dataTable WHERE dataTable.FIELD = 'Value' FOR XML AUTO, ROOT('RootVal')

结果数据集是格式良好的 XML,但我不知道如何将它从结果集获取到文件。

对我来说,在 C# 4.0 中编写控制台应用程序来执行此操作是一项相对容易的任务,但限制要求我至少在编写控制台应用程序和调度程序之前证明它无法使用 SSIS 完成。

bil*_*nkc 5

抱歉破坏,但有一个 SSIS 选项供您选择:导出列转换

我定义了一个 OLE DB 查询

SELECT
    *
FROM
(
    SELECT * FROM dbo.spt_values FOR XML AUTO, ROOT('RootVal')
) D (xml_node)
CROSS APPLY
(
    SELECT 'C:\ssisdata\so_xmlExtract.xml'
) F (fileName)
Run Code Online (Sandbox Code Playgroud)

这导致数据流中有 1 行和 2 列。然后我连接导出列转换,并与有线它xml_node作为提取塔fileName作为文件路径列

大部分截断的结果如下

<RootVal>
    <dbo.spt_values name="rpc" number="1" type="A  " status="0"/>
    <dbo.spt_values name="dist" number="8" type="A  " status="0"/>
    <dbo.spt_values name="deferred" number="8192" type="V  " low="0" high="1" status="0"/>
</RootVal>
Run Code Online (Sandbox Code Playgroud)

这个带有 ssis 的Q&A Export Varbinary(max) 列提供了更详细的答案,带图片