Hallo zusammen
Meine Aufgabe:
- Daten aus bestehenden XML-Dateien in bestehende Datensätze in SQL-Tabellen übernehmen
- Die Tabellen haben Foreign-Key Schlüssel, dadurch können die ID's der zu ersetzenden Datensätze nicht geändert werden
(also keine DELETE und INSERT-Anweisung möglich)
Folgender Code funktioniert, wird aber nach ca. 1000 eingetragenen Datensätzen extrem, massiv und unerträglich langsam

:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23:
| foreach (XmlNode _xmlnode in _xmlnodelist1) { for (int ii = 0; ii < ia_temp_wert.Length; ii++) { if (Convert.ToInt32(_xmldocument.GetElementsByTagName("IRGENDETWAS").Item(i).InnerText) == ii) { befehl.CommandText = "UPDATE MEINETABELLE SET " + "MEINESPALTE = '" + Convert.ToString(_xmldocument.GetElementsByTagName("IRGENDETWAS").Item(i).InnerText) + "'," + "WHERE MEINEID = " + Convert.ToInt32(_xmldocument.GetElementsByTagName("ANDEREID").Item(i).InnerText) + ";"; befehl.ExecuteNonQuery(); break; } else { } }
i++; } |
Den Zeitverlust vermute ich im Query, das wahrscheinlich bei jedem Dateneintrag neu geparst wird.
Habe aber keine Ahnung, wie ich dies zu vermeiden habe.
Wie kann ich die Performance meines Imports erhöhen (damit meine Wenigkeit nicht in Dauerschlaf verfällt

)?
Welche Importmöglichkeiten sind sonst noch zu prüfen?
Ich habe noch weiter Tabellen zu updaten, die mehr als 50000 Datensätze beinhalten, somit eine Wartezeit von über 10 h bewirken.
Muss definitiv auch schneller zu erstellen sein.
Danke für eure Hilfe.