Ich muss 40 Millionen Datensätze aus einer .csv
Datei in eine Datenbank einfügen und unten ist der Prozess, den ich befolgte.Wie können Millionen von Datensätzen aus einer CSV-Datei in eine SQL Server-Datenbank eingefügt werden?
Windows Service 1:
- die CSV-Lese
- die Aufzeichnungen Validierung
- Einfügen gültige Datensätze in Erfolgstabelle (Zwischentabelle)
SqlBulkCopy
verwenden.
Windows Service 2.
- Erste 10 000 Datensätze aus tisch zu einer Zeit
- eine foreach für diese 10 000
- lief jeden Datensatz in der Datenbank zu senden in die Haupt einfügen Tabelle.
Windows Service 1 dauert ca. 30-40 Min aber Windows-Dienst 2 dauert ca. 5 Stunden die Aufgabe (Mindestzeit) in Anspruch nehmen. Ich habe 2 Möglichkeiten, dies zu tun, kann aber nicht entscheiden, welches besser und offen für Vorschläge ist.
- Erstellen 4 separaten Windows-Dienst und Verarbeitung 40000 Datensätze gleichzeitig
- einen Job Uhr verwenden, können wir verwenden, während Schleife
- Prozedur aufrufen async von Windows-Dienst
Meine größten hier Zweifel, dass wir verwenden Transaktionen in der Prozedur und arbeiten async damit, weil gemäß meiner Annahme, die Transaktion verwendend, die Tabelle sperrt und anderer Prozess darauf arbeiten muss.
Millionen? SqlBulkCopy ist die einzige. 'foreach 'ist wahrscheinlich das schwache Gebiet. Wenn Sie einen Cursor verwenden, sollten Sie die Abfrage so umschreiben, dass sie auf der Grundlage von Abfragen erfolgt. –
Wir verwenden sqlbulkcopy zu Windows-Dienst 1, aber wir führen bestimmte Validierung in zweiten Windows-Dienstprozedur, so kann Bulkcopy nicht verwenden.Eine andere Sache ist, dass, wenn wir Bulk-Kopie verwenden, lassen Sie eine Reihe von 1 Lakh Datensätze zu einer Zeit eingefügt werden Mit Sql Bulk-Kopie dann selbst wenn ein Datensatz fehlschlägt, muss ich dies protokollieren oder zumindest wissen müssen, welcher Datensatz diesen Fehler hat, was nicht möglich ist mit Bulkcopy – sainath
Bit, wenn ein anderer Ansatz, aber das wäre nichts für SSIS zu tun?Die Integrationsdienste verfügen über eine Masseneinfügung, in der Sie in der Mitte transformieren können. Ich bezweifle sehr, dass es über eine Stunde dauern würde in SSIS – Caz1224