无法从XML文件将数据读入SQL Server 2005

无法从XML文件将数据读入SQL Server 2005,sql,xml,sql-server-2005,Sql,Xml,Sql Server 2005,我试图使用以下脚本从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(

我试图使用以下脚本从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>


您是否收到错误消息?如果是,什么?没有错误消息。但是当我运行sql脚本时,0行会受到影响。谢谢您的回答。我可以问一下,我们如何编辑这个select语句来读取外部xml吗file@user2054857像[这个答案]那样加载它。将文件加载到XML变量,然后查询该变量。这里不需要使用查询。请看一看。@user2054857 select@xml=select*FROM OPENROWSET BULK'C:\data.xml',SINGLE_BLOB AS XMLDATA当我试图使用此脚本时,是否也可以问一下:declare@xml xml-select@xml=select*FROM OPENROWSET BULK'C:\Users\MehtabM\Desktop\GetAllTermTree.xml',SINGLE_BLOB AS XMLDATA插入TermsTree TermID,ParentID,Name;使用XMLNAMESPACESDEFAULT“选择X.TermsTree.query'TermID.value.”、“INT”、X.TermsTree.query'ParentID.value.”、“INT”、X.TermsTree.query'Name.value.”、“VARCHAR2000”FROM@xml.nodes'/arrayAfterm_Child/Term_Child'XTermsTree我在“;”附近得到了不正确的语法味精
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)