【问题标题】:SSIS - VB Script Component to Convert Input to XMLSSIS - 将输入转换为 XML 的 VB 脚本组件
【发布时间】:2011-09-28 09:24:19
【问题描述】:

我对 (VB) 脚本完全陌生,正在尝试在 SSIS 脚本组件中找到一种方法,将 3 个输入列转换为一个 XML 结构化输出列。

Input:

ID  NAME    DATE
1   AAA     2011-01-01
2   BBB     2011-02-01
3   CCC     2011-03-01


Expected Output:

<output>
<row>
    <id>1</id>
    <name>AAA</name>
    <date>2011-01-01</date>
</row>
<row>
<id>2</id>
    <name>BBB</name>
    <date>2011-02-01</date>
</row>
<row>
    <id>3</id>
    <name>CCC</name>
    <date>2011-03-01</date>
</row>
</output>

我正在寻找的解决方案需要可扩展,因为可以有 x 个列,脚本只需要遍历每一列并生成名称标签和值。

我通过将每个值输出到一个通用的“param”节点来达到这个目的,但我不确定如何获取列名。

    Public Overrides Sub ProcessInput(ByVal InputID As Integer, ByVal Buffer As Microsoft.SqlServer.Dts.Pipeline.PipelineBuffer)

        inputBuffer = Buffer

        MyBase.ProcessInput(InputID, Buffer)
    End Sub

    Public Overrides Sub Input0_ProcessInputRow(ByVal Row As Input0Buffer)

        Dim xml_string As String = ""
        Dim counter As Integer

        xml_string = "<output>"

        For counter = 0 To inputBuffer.ColumnCount - 1

            xml_string = xml_string + "<param>" + inputBuffer.Item(counter).ToString() + "</param>"

        Next

        xml_string = xml_string + "<output>"

        Row.xmloutput = xml_string

    End Sub

【问题讨论】:

标签: sql-server xml vb.net ssis


【解决方案1】:

SQL 代码:

  SELECT [ID]
  ,rtrim([Name]) [Name]
  ,[Date]
  FROM [tempdb].[dbo].[Table1]
  FOR XML PATH('row'), ROOT ('output')

我得到了这个输出

  <output>
    <row>
      <ID>1</ID>
      <Name>AAA</Name>
      <Date>2011-01-01</Date>
    </row>
    <row>
      <ID>2</ID>
      <Name>BBB</Name>
      <Date>2011-02-01</Date>
    </row>
    <row>
      <ID>3</ID>
      <Name>CCC</Name>
      <Date>2011-03-01</Date>
    </row>
  </output>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-20
    • 1970-01-01
    • 2023-03-16
    • 2020-11-30
    • 2013-11-04
    • 1970-01-01
    相关资源
    最近更新 更多