2016-08-12 3 views
-5

Ich habe 1 Million Zeilen von Daten in einer Datei, ich möchte alle Datensätze in SQL Server einfügen. Während des Einfügens mache ich einen Vergleich mit vorhandenen Daten auf dem Server, wenn der Vergleich zufriedenstellend ist, werde ich die vorhandenen Datensätze auf dem Server aktualisieren, sonst werde ich den Datensatz aus der Datei einfügen.SQL Server Masseneinfügung für große Datenmenge

Ich mache dies derzeit durch Schleifen von C#, die mehr als 3 Stunden verbrauchen, um die Arbeit abzuschließen. Kann jemand eine Idee vorschlagen, um die Leistung zu verbessern?

Danke, Xavier.

+1

BCP ..................... –

+0

Vielen Dank für Ihre Antwort. Können wir einen Vergleich mit bestehenden Daten mit Massenkopierprogramm machen, bin ich neu in diesem – xavier

+0

müssen Sie die Daten in Zwischentabelle (Heap) laden, erstellen Sie die Indizes, vergleichen Sie und schließlich aktualisieren Sie die Zieltabelle. Mit BCP oder anderen Massenlademethoden sollte die Belastung normalerweise 10 bis 20 Sekunden dauern, maximal einige Minuten. – Anton

Antwort

0
  1. Überprüfen Sie, ob Ihre Datenbank im vollständigen oder einfachen Wiederherstellungsmodus:

    SELECT recovery_model_desc FROM sys.databases WHERE name = 'MyDataBase';

  2. Wenn Datenbank SIMPLE Recovery-Modus ist, können Sie direkt eine Staging-Tabelle erstellen. Wenn es in Full Modus ist, dann besser erstellen Staging-Tabelle in separaten Datenbank mit Simple Modell. Verwenden Sie
  3. jedes BulkInsert Betrieb/Werkzeug (zB BCP, wie bereits vorgeschlagen)
  4. Legen Sie nur die Daten aus dem Staging-Tabelle, die in Ihrer Zieltabelle nicht existieren. (hoffe, Sie wissen, wie es geht)
+0

Vielen Dank – xavier

Verwandte Themen