15 秒の SQL XML に関する 3 部構成のシリーズ (http://www.15seconds) をご覧ください。 com/Issue/050803.htm .
個人的には、SQL XQuery 関数を使用して XML を断片に細断し、それらを SQL Server に格納します。
次のような場合:
<data>
<person>
<name>Jones</name>
<firstname>Peter</firstname>
</person>
<person>
<name>Smith</name>
<firstname>Frank</firstname>
</person>
<data>
次のように書くことができます:
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)
つまり、基本的に .nodes
関数は、XML を「疑似テーブル」 Data.Person
に分割します - 各 <person>
エントリはテーブルの 1 行になります。
.value()
を使用 関数を使用すると、細断された XML ノードから単一の値を抽出できます。これで、多数の varchar(20) フィールドができました。
この方法は、XML がかなり小さい場合 (数百のエントリ) に適しています。巨大な XML ファイルがある場合は、 などの他の方法を調査することをお勧めします。 XML バルクロード .