我有一个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批量加载器是否可以使用这两种方法中的任何一种?如果没有,我的选择是什么?
答案 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