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

时间:2012-03-12 18:34:17

标签: c# sql xml forms

我是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#Forms程序。

2 个答案:

答案 0 :(得分:2)

这将完成你的工作。请确保将 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)

答案 1 :(得分:1)

首先,您将deserialize XML转换为C#对象。

然后,您serialize将对象中的数据导入数据库。

幸运的是,C# makes XML Deserialization a snap