【问题标题】:Parsing XML data while using SQLXML to Bulk Load into database在使用 SQLXML 批量加载到数据库时解析 XML 数据
【发布时间】:2015-07-13 15:05:30
【问题描述】:

我有一个 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>

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

使用 SQLXML 批量加载器可以实现这两件事吗?如果没有,我有什么选择?

【问题讨论】:

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


    【解决方案1】:

    你可以使用 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

    【讨论】:

      猜你喜欢
      • 2022-01-02
      • 1970-01-01
      • 1970-01-01
      • 2016-04-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-10
      相关资源
      最近更新 更多