Se den tredelte serie om SQL XML på 15 sekunder:http://www.15seconds. com/Issue/050803.htm .
Jeg ville personligt bruge SQL XQuery-funktionerne til at adskille din XML i bits og stykker og gemme dem i SQL Server.
Hvis du har noget som:
<data>
<person>
<name>Jones</name>
<firstname>Peter</firstname>
</person>
<person>
<name>Smith</name>
<firstname>Frank</firstname>
</person>
<data>
du kan skrive noget som:
SELECT
Data.Person.value('(name)[1]', 'varchar(20)') as 'Name',
Data.Person.value('(firstname)[1]', 'varchar(20)') as 'First Name'
FROM
@XmlVar.nodes('/data/person') As Data(Person)
Så grundlæggende er .nodes
funktion makulerer din XML til en "pseudo-tabel" Data.Person
- hver
Med .value()
funktion, kan du udtrække enkelte værdier fra disse makulerede XML-noder. Du har nu en masse varchar(20) felter, det kan f.eks. indsat i en tabel.
Denne metode fungerer godt, hvis din XML er ret lille (et par hundrede poster). Hvis du har enorme XML-filer, vil du måske undersøge andre metoder, såsom XML-bulkload .