无法从XML文件将数据读入SQL Server 2005
我试图使用以下脚本从XML文件中读取数据,并将其插入SQLServer2005上名为TermsTree的表中无法从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(
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)