Kolla in den tredelade serien om SQL XML på 15 sekunder:http://www.15seconds. com/Issue/050803.htm .
Jag skulle personligen använda SQL XQuery-funktionerna för att strimla isär din XML i bitar och bitar och lagra dem i SQL Server.
Om du har något som:
<data>
<person>
<name>Jones</name>
<firstname>Peter</firstname>
</person>
<person>
<name>Smith</name>
<firstname>Frank</firstname>
</person>
<data>
du kan skriva något 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å i princip .noder
funktion strimlar din XML till en "pseudo-tabell" Data.Person
- varje
Med .value()
funktion, kan du extrahera enskilda värden från dessa strimlade XML-noder. Du har nu ett gäng varchar(20)-fält, det kan vara t.ex. infogas i en tabell.
Denna metod fungerar bra om din XML är ganska liten (några hundra poster). Om du har enorma XML-filer kanske du vill undersöka andra metoder, till exempel XML-bulkbelastning .