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:
Das dbml-File sieht dann wie folgt aus:
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.
