Импорт данных XML из файла XML в базу данных SQL - PullRequest
1 голос
/ 12 марта 2012

Я новичок в 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 ]

2 голосов
/ 12 марта 2012

Это сделает вашу работу. Обязательно замените filePath \ fileName.xml на полный путь к xml и измените / dataroot / CityData (внизу) в соответствии с вашим xml. Также 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 голос
/ 12 марта 2012

Во-первых, вы десериализуете XML в объекты C #.

Затем вы сериализуете данные из объектов в базу данных.

К счастью, C # делает десериализацию XML несложной задачей .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...