将XML数据从XML文件导入SQL数据库

本文关键字:XML SQL 数据库 导入 数据 文件 | 更新日期: 2023-09-27 18:27:37

我是C#的新手,一直在学习数据库。目前,我正在尝试从一个XML文档中导入数据,该文档中的项目存储如下:

   <CityData>
        <City>Ada</City>
        <County>Olmsted</County>
        <AreaCode>507</AreaCode>
        <Founded>1900</Founded>
        <CityWebSite>www.adacity.com</CityWebSite>
        <Population>1200</Population>
        <Zipcode>56996</Zipcode>
        <ZipcodeMax>57656</ZipcodeMax>
    </CityData>

我正在尝试将每个数据集合保存到SQL Express数据库中的不同行中。我已经能够在数据库中存储其他信息,只是不知道如何使用XML文档来实现这一点。数据库与我正在编写的C#程序一起本地存储在我的机器上。我有一个新表,其中列的命名和排序与XML文档模式类似。我在网上找到的教程是针对.asp程序的。有人这样做过吗?这是一个C#窗体程序。

将XML数据从XML文件导入SQL数据库

这将完成您的工作。请确保将filePath''fileName.xml替换为xml的完整路径,并根据xml更改/dataroot/CityData(底部)。此外,sql应该能够访问该文件。

Declare @xml XML
Select  @xml  = 
CONVERT(XML,bulkcolumn,2) FROM OPENROWSET(BULK 'filePath'fileName.xml',SINGLE_BLOB) AS X
SET ARITHABORT ON
Insert into [YourTableName] 
        (
            City,County,AreaCode,Founded,CityWebSite,[Population],Zipcode,ZipcodeMax
        )
    Select 
        P.value('City[1]','VARCHAR(100)') AS City,
        P.value('County[1]','VARCHAR(100)') AS County,
        P.value('AreaCode[1]','VARCHAR(100)') AS AreaCode,
        P.value('Founded[1]','VARCHAR(100)') AS Founded,
        P.value('CityWebSite[1]','VARCHAR(100)') AS CityWebSite,
        P.value('Population[1]','VARCHAR(100)') AS Population,
        P.value('Zipcode[1]','VARCHAR(100)') AS Zipcode,
        P.value('ZipcodeMax[1]','VARCHAR(100)') AS ZipcodeMax,
    From @xml.nodes('/dataroot/CityData') PropertyFeed(P)

首先,将XML反序列化为C#对象。

然后,将对象中的数据序列化到数据库中。

幸运的是,C#让XML反序列化变得轻而易举。