从xml文件向SQL Server数据库添加行
我正忙于将一个网站从xml文件库转换为SQL Server 2012 express数据库,现在我已设法从xml中获取大部分标记,以便轻松地导入SQL Server 我现在的问题在于这些XML的一个特定部分 这是我遇到问题的部分从xml文件向SQL Server数据库添加行,sql,xml,sql-server-2012-express,Sql,Xml,Sql Server 2012 Express,我正忙于将一个网站从xml文件库转换为SQL Server 2012 express数据库,现在我已设法从xml中获取大部分标记,以便轻松地导入SQL Server 我现在的问题在于这些XML的一个特定部分 这是我遇到问题的部分 <?xml version="1.0" encoding="utf-16"?> <License xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w
<?xml version="1.0" encoding="utf-16"?>
<License xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Reference>00b2d4cf-699c-4427-bcf0-a0ca456654c2</Reference>
<MacAddresses>
<string>00:0D:87:FE:9A:21</string>
<string>00:20:ED:14:47:64</string>
<string>00:13:D3:11:7C:D2</string>
<string>00:13:D3:11:7C:D8</string>
<string>00:19:D1:04:12:98</string>
<string>00:19:66:C0:7F:AF</string>
</MacAddresses>
</License>
我会手动操作,但我有700多个导入许可证,手动操作需要很长时间
如果您使用的是SQL Server 2005或更高版本,我们将不胜感激如果您使用的是SQL Server 2005或更高版本,您可以使用本机XQuery支持从该XML中提取所需的数据,方法如下:
DECLARE @input XML = '<License xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Reference>00b2d4cf-699c-4427-bcf0-a0ca456654c2</Reference>
<MacAddresses>
<string>00:0D:87:FE:9A:21</string>
<string>00:20:ED:14:47:64</string>
<string>00:13:D3:11:7C:D2</string>
<string>00:13:D3:11:7C:D8</string>
<string>00:19:D1:04:12:98</string>
<string>00:19:66:C0:7F:AF</string>
</MacAddresses>
</License>'
SELECT
Reference = License.value('(Reference)[1]', 'varchar(50)'),
MacAddress = MacAddr.value('.', 'varchar(50)')
FROM
@input.nodes('License') AS XTbl1(License)
CROSS APPLY
License.nodes('MacAddresses/string') AS XTbl2(MacAddr)
当然,您也可以在
选择之前使用插入dbo.YourTable(Reference,MacAddress)…
将此数据自动插入表中使用XML解析器解析XML并插入结果数据。SQL只是结构化查询语言—许多数据库系统都使用这种语言,但不是数据库产品。。。很多东西,比如XML支持,都是高度特定于供应商的-所以我们真的需要知道您使用的是什么数据库系统(以及哪个版本)(请相应地更新标记)…@marc_s:他们中有没有人支持将XML直接导入表?@RobertHarvey:SQL Server有原生的XQuery支持,我相信Oracle和DB2有一些东西,太(不知道这些细节)我使用mssql 2012 express作为db产品
DECLARE @input XML = '<License xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Reference>00b2d4cf-699c-4427-bcf0-a0ca456654c2</Reference>
<MacAddresses>
<string>00:0D:87:FE:9A:21</string>
<string>00:20:ED:14:47:64</string>
<string>00:13:D3:11:7C:D2</string>
<string>00:13:D3:11:7C:D8</string>
<string>00:19:D1:04:12:98</string>
<string>00:19:66:C0:7F:AF</string>
</MacAddresses>
</License>'
SELECT
Reference = License.value('(Reference)[1]', 'varchar(50)'),
MacAddress = MacAddr.value('.', 'varchar(50)')
FROM
@input.nodes('License') AS XTbl1(License)
CROSS APPLY
License.nodes('MacAddresses/string') AS XTbl2(MacAddr)
Reference MacAddress
00b2d4cf-699c-4427-bcf0-a0ca456654c2 00:0D:87:FE:9A:21
00b2d4cf-699c-4427-bcf0-a0ca456654c2 00:20:ED:14:47:64
00b2d4cf-699c-4427-bcf0-a0ca456654c2 00:13:D3:11:7C:D2
00b2d4cf-699c-4427-bcf0-a0ca456654c2 00:13:D3:11:7C:D8
00b2d4cf-699c-4427-bcf0-a0ca456654c2 00:19:D1:04:12:98
00b2d4cf-699c-4427-bcf0-a0ca456654c2 00:19:66:C0:7F:AF