0

次のスクリプトを使用してXMLファイルからデータを読み取り、SQLServer2005で呼び出されるテーブルに挿入しようとしていますTermsTree

INSERT INTO TermsTree (TermID,ParentID,Name)

SELECT X.TermsTree.query('TermID').value('.', 'INT'),
       X.TermsTree.query('ParentID').value('.', 'INT'),
       X.TermsTree.query('Name').value('.', 'VARCHAR(2000)')
FROM (

SELECT CAST(x AS XML)
FROM OPENROWSET(
    BULK 'C:\Users\MehtabM\Desktop\GetAllTermTree.xml',
    SINGLE_BLOB) AS T(x)
    ) AS T(x)
CROSS APPLY x.nodes('ArrayOfTerm_Child/Term_Child') AS X(TermsTree);

XMLファイルのサンプルは次のとおりです。

<?xml version="1.0" encoding="utf-8" ?>
<ArrayOfTerm_Child xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://tempuri.org/">
    <Term_Child>
        <TermID>2021</TermID>
        <Name>A. Geographic locations</Name>
        <ParentID>0</ParentID>
    </Term_Child>
    <Term_Child>
        <TermID>3602</TermID>
        <Name>Oceania</Name>
        <ParentID>2021</ParentID>
    </Term_Child>
    <Term_Child>
        <TermID>3604</TermID>
        <Name>Australasia</Name>
        <ParentID>3602</ParentID>
    </Term_Child>
    </Term_Child>
</ArrayOfTerm_Child>
4

1 に答える 1

0

http://www.sqlfiddle.com/#!3/18f84/15

declare @xml xml 
select @xml='<?xml version="1.0" encoding="utf-8"?>
 <ArrayOfTerm_Child xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://tempuri.org/">
   <Term_Child>
<TermID>2021</TermID>
<Name>A. Geographic locations</Name>
<ParentID>0</ParentID>
 </Term_Child>
<Term_Child>
<TermID>3602</TermID>
<Name>Oceania</Name>
<ParentID>2021</ParentID>
 </Term_Child>
 <Term_Child>
<TermID>3604</TermID>
<Name>Australasia</Name>
<ParentID>3602</ParentID>
 </Term_Child>
 </ArrayOfTerm_Child>'

;WITH XMLNAMESPACES(DEFAULT 'http://tempuri.org/')
SELECT X.TermsTree.query('TermID').value('.', 'INT'),
       X.TermsTree.query('ParentID').value('.', 'INT'),
       X.TermsTree.query('Name').value('.', 'VARCHAR(2000)')
FROM @xml.nodes('/ArrayOfTerm_Child/Term_Child') X(TermsTree)
于 2013-02-08T15:43:20.043 に答える