2011-09-28 8 views
0

Im complètement nouveau à (VB) scripting, et essaye de trouver un moyen dans un composant de script SSIS pour convertir 3 colonnes d'entrée en une colonne de sortie structurée XML.SSIS - Composant de script VB pour convertir l'entrée en 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> 

La solution im recherche a besoin d'être évolutive dans la mesure où il peut y avoir x nombre de colonnes et le script a juste besoin de parcourir chaque colonne et générer la balise nom et la valeur.

Je suis en quelque sorte arrivé en sortant chaque valeur dans un nœud "param" générique, mais je ne sais pas comment obtenir les noms de colonnes.

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 
+0

trouvé ma réponse ici: http://agilebi.com/jwelch/2007/06/03/xml- transformations-partie-2 / – shakedown7

Répondre

1

code SQL:

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

Je suis arrivé ce résultat

<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>