使用SQLXML批量加载到数据库

时间:2015-07-13 15:05:31

标签: .net xml sql-server-2008-r2 xml-parsing sqlxml

我有一个XML文件,我想使用.NET加载到关系数据库(SQL Server 2008 R2)中(我可以选择任何框架)。我知道最简单的方法是通过SQLXML Bulk Loader

使用批量加载器,是否可以将XML数据从单个元素解析为多个列。

例如,给定:

<vuln:product>cpe:/a:magpierss:7.1</vuln:product> 

可以解析XML,以便“magpierss”最终出现在一个数据库表列中,“7.1”出现在另一列中吗?

其次,一些元素具有有限的值集(枚举)。

例如

<favoriteColor>red</favoriteColor>
<favoriteColor>blue</favoriteColor>

Id喜欢用我在不同数据库表中定义的枚举值替换所述元素数据(即“红色” - > 0,“蓝色” - > 1或“绿色” - > 2)。而不是一遍又一遍地加载实际的字符串值。

使用SQLXML批量加载器是否可以使用这两种方法中的任何一种?如果没有,我的选择是什么?

1 个答案:

答案 0 :(得分:0)

您可以使用SQL Server XML解析

DECLARE @MyXML XML
SET @MyXML = '<SampleXML>
 <favoriteColor>
     <favoriteColor>red</favoriteColor>
     <favoriteColor>blue</favoriteColor>
<favoriteColor/>
</SampleXML>'

SELECT
a.b.value(‘favoriteColor[1]/favoriteColor[1]’,‘varchar(10)’) AS Color1,
a.b.value(‘favoriteColor[1]/favoriteColor[1]’,‘varchar(10)’) AS Color2
FROM @MyXML.nodes(‘SampleXML’) a(b)

链接:OpenXml

reading-xml-file-using-t-sql

openxml-xml-integration-with-sql-server

How-to-Traverse-Hierarchical-XML

相关问题