Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 将xml文件加载到SQL Server表中不起作用。_Sql Server_Xml_Tsql_Xpath_Xquery - Fatal编程技术网

Sql server 将xml文件加载到SQL Server表中不起作用。

Sql server 将xml文件加载到SQL Server表中不起作用。,sql-server,xml,tsql,xpath,xquery,Sql Server,Xml,Tsql,Xpath,Xquery,我有一个XML文件,我正试图加载到SQL server中,但当我运行脚本时,它没有显示任何行 <root> <DeviceRecord xmlns="http://www.archer-tech.com/"> <IP>137.52</IP> <FQDN>sdcww00</FQDN> <NetBios_Name></NetBios_Name> <Operatin

我有一个XML文件,我正试图加载到SQL server中,但当我运行脚本时,它没有显示任何行

<root>
  <DeviceRecord xmlns="http://www.archer-tech.com/">
    <IP>137.52</IP>
    <FQDN>sdcww00</FQDN>
    <NetBios_Name></NetBios_Name>
    <Operating_System>Microsoft Windows Vista</Operating_System>
    <Mac_Address></Mac_Address>
    <Confidence_Level>65
</Confidence_Level>
  </DeviceRecord>
  <DeviceRecord xmlns="http://www.archer-tech.com/">
    <IP>155.37.51</IP>
    <FQDN>ww00048</FQDN>
    <NetBios_Name></NetBios_Name>
    <Operating_System>Microsoft Windows Vista</Operating_System>
    <Mac_Address></Mac_Address>
    <Confidence_Level>65
</Confidence_Level>
</DeviceRecord>
</root>

首先,您必须检查XML是否正确读取。将XML读入变量后使用此选项:

SELECT @xmldata;
其次,所有值都存在于默认名称空间中。你必须申报:

WITH XMLNAMESPACES(DEFAULT 'http://www.archer-tech.com/')
第三,您的查询应该读取所有嵌套的
条目。您可能需要
.nodes()
向下到该级别。完整查询应如下所示:

WITH XMLNAMESPACES(DEFAULT 'http://www.archer-tech.com/')
SELECT
     x.Rec.value('(IP/text())[1]','varchar(20)') AS DevRec_ID
    ,x.Rec.value('(FQDN/text())[1]','varchar(20)') AS DevRec_FQDN
    --The rest should be the same approach...
FROM @xmldata.nodes('/*:root/DeviceRecord') as x(rec)
编辑:您的节点不是默认命名空间的一部分。
我使用了一个通配符(
*:root

首先,您必须检查XML是否正确读取。将XML读入变量后使用此选项:

SELECT @xmldata;
其次,所有值都存在于默认名称空间中。你必须申报:

WITH XMLNAMESPACES(DEFAULT 'http://www.archer-tech.com/')
第三,您的查询应该读取所有嵌套的
条目。您可能需要
.nodes()
向下到该级别。完整查询应如下所示:

WITH XMLNAMESPACES(DEFAULT 'http://www.archer-tech.com/')
SELECT
     x.Rec.value('(IP/text())[1]','varchar(20)') AS DevRec_ID
    ,x.Rec.value('(FQDN/text())[1]','varchar(20)') AS DevRec_FQDN
    --The rest should be the same approach...
FROM @xmldata.nodes('/*:root/DeviceRecord') as x(rec)
编辑:您的节点不是默认命名空间的一部分。 我使用了一个通配符(
*:root