XML in SQL Server importieren mit LINQ

by AlexanderZeitler 29. January 2008 13:29

Der Import von XML in eine SQL Server Tabelle ist mit Linq richtig einfach, wie ich heute feststellen durfte...

Gegeben ist ein XML-File folgender Struktur:



    
        Alexander Zeitler
        http://blog.alexonasp.net/
        http://blog.alexonasp.net/Rss.aspx
        RSS
    

Die Datenbank-Tabelle besitzt folgende Struktur:

dbtable

Das dbml-File sieht dann wie folgt aus:

dbml

Der Code für das Auslesen des XML-Files ("Bloggers.xml") und das Schreiben in die Tabelle Blogger ist dieser:

XDocument xml = XDocument.Load("Bloggers.xml");
BloggersDataContext db = new BloggersDataContext();

var xmlbloggers = from b in xml.Descendants("blogger")
                  orderby b.Element("name").Value ascending
                  select new Blogger
                  {
                      bloggername = b.Element("name").Value,
                      blogurl = b.Element("blogurl").Value,
                      blogfeedurl = b.Element("blogfeedurl").Value,
                      feedtype = b.Element("feedtype").Value,
                      guid = Guid.NewGuid()
                  };

db.Bloggers.InsertAllOnSubmit(xmlbloggers);
db.SubmitChanges();

Wie man sieht, ist nur minimal mehr Aufwand als für das reine Lesen eines XML-Files notwendig.

Konkret ist es nur die Verwendung von "new Blogger" im select-Statement, die Zuweisung der Guid sowie die Instanzierung des DB-DataContexts und der Aufruf des eigentlichen Inserts / SubmitChanges.

Getestet habe ich das Ganze übrigens mit über 20.000 Datensätzen im XML, wobei hier keinerlei Datenfehler auftauchten. Performance-Tests habe ich aus Zeitgründen nicht durchgeführt - gefühlt waren es ca. 20 Sekunden ;-)

Wenn ihnen der Artikel gefallen hat oder er für sie hilfreich war, bitte "kicken" sie ihn.
kick it on dotnet-kicks.de

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tags: , ,

Powered by BlogEngine.NET
Theme by Alexander Zeitler

Search

Community