2016-06-14 3 views
2

Mein Gegenüber hat uns eine XML-Beispieldatei zur Verfügung gestellt und wir prüfen, ob die Daten in der Datei in eine Datenbank importiert werden können. Was wir sind daran interessiert, mit sind die Werte von ID, Titel, Typ, Land (und vielleicht eine Bemerkung)XML-Daten extrahieren und in die Datenbank laden (mögliche Ansätze)

<column>ID</column> 
<column>Title</column> 
<column>Type</column> 
<column>Country</column> 
<column></column></row> 
<row> 
<column>12345</column> 
<column>ABC</column> 
<column>SN</column> 
<column>Hong Kong</column> 
<column></column></row> 

<?xml version="1.0" encoding="UTF-8" ?> 
<xmloutfile> 
<header> 
<TYPE>XLFT</TYPE> 
<DN>C001</DN> 
</header> 
<table> 
<row> 
<column></column> 
<column></column> 
<column></column> 
<column></column> 
<column></column></row> 
<row> 
<column></column> 
<column></column> 
<column></column> 
<column></column> 
<column></column></row> 
<row> 
<column>ID</column> 
<column>Title</column> 
<column>Type</column> 
<column>Country</column> 
<column></column></row> 
<row> 
<column>12345</column> 
<column>ABC</column> 
<column>SN</column> 
<column>Hong Kong</column> 
<column></column></row> 
<row> 
<column>17777</column> 
<column></column> 
<column>MO</column> 
<column>China</column> 
<column></column></row> 
<row> 
<column></column> 
<column></column> 
<column></column> 
<column></column> 
<column></column></row></table></xmloutfile> 

:

Die XML-Datei wird wie folgt dargestellt stell dir vor, das ist eine allgemeine Tabelle, wie kann ich diese Daten entsprechend einfügen?

Schließlich würde ich es SSIS verwenden tun aber in diesem Moment (es wäre gut, wenn ich es über SSIS tun können!), Sondern will nur keine praktikable Ansätze bewerten. Tks

+0

Mit anderen Worten: Sie alle leeren Zeilen/Spalten entfernen? –

Antwort

1

XQuery:

declare @x xml ='<xmloutfile> 
    <header> 
    <TYPE>XLFT</TYPE> 
    <DN>C001</DN> 
    </header> 
    <table> 
    <row> 
     <column></column> 
     <column></column> 
     <column></column> 
     <column></column> 
     <column></column> 
    </row> 
    <row> 
     <column></column> 
     <column></column> 
     <column></column> 
     <column></column> 
     <column></column> 
    </row> 
    <row> 
     <column>ID</column> 
     <column>Title</column> 
     <column>Type</column> 
     <column>Country</column> 
     <column></column> 
    </row> 
    <row> 
     <column>12345</column> 
     <column>ABC</column> 
     <column>SN</column> 
     <column>Hong Kong</column> 
     <column></column> 
    </row> 
    <row> 
     <column>17777</column> 
     <column></column> 
     <column>MO</column> 
     <column>China</column> 
     <column></column> 
    </row> 
    <row> 
     <column></column> 
     <column></column> 
     <column></column> 
     <column></column> 
     <column></column> 
    </row> 
    </table> 
</xmloutfile>' 


select t.c.value('column[1]', 'nvarchar(max)') 
    , t.c.value('column[2]', 'nvarchar(max)') 
    , t.c.value('column[3]', 'nvarchar(max)') 
    , t.c.value('column[4]', 'nvarchar(max)') 
    , t.c.value('column[5]', 'nvarchar(max)') 
from @x.nodes('//row') t(c) 
+0

Große Tks! Ich habe verwendet: wählen tcvalue ('Spalte [1]', 'Nvarchar (max)') ID , Tcvalue ('Spalte [2]', 'Nvarchar (max)') Titel , Tcvalue (' Spalte [3] ',' nvarchar (max) 'Typ , tcvalue (' Spalte [4] ',' nvarchar (max) ') Land , tcvalue (' Spalte [5] ',' nvarchar (max) ') Bemerkung von @ XML.nodes (' // Zeile ') t (c) wo c.value (' ./ Spalte [1] ',' varchar (max) ') nicht in (' ID ', '') – Trowa

+0

@Trowa, Prost. –

Verwandte Themen