Ich würde Ihrer Lösung zustimmen. Das Lesen der Datei um jeweils eine Zeile sollte den Aufwand für das Lesen der gesamten Datei in den Speicher auf einmal vermeiden, wodurch die Anwendung schnell und effizient ausgeführt werden kann, wobei zunächst Zeit benötigt wird, um die Datei zu lesen (was relativ schnell ist) und die Zeilen zu analysieren . Die einzige Vorsichtsmaßnahme, die ich für Sie habe, ist, darauf zu achten, ob Sie neue Zeilenumbrüche in Ihre CSV-Datei eingefügt haben. Ich weiß nicht, ob das spezifische CSV-Format, das Sie verwenden, tatsächlich Zeilenumbrüche zwischen Anführungszeichen in den Daten ausgibt, aber das könnte diesen Algorithmus natürlich verwirren.
Ich würde auch vorschlagen, die INSERT-Anweisungen (einschließlich vieler INSERT-Anweisungen in einer Zeichenfolge) zu verarbeiten, bevor sie an die Datenbank gesendet werden, wenn dies keine Probleme beim Abrufen generierter Schlüsselwerte für nachfolgende Fremdschlüssel ergibt (hoffentlich müssen Sie keine generierten Schlüsselwerte abrufen). Denken Sie daran, dass SQL Server (wenn Sie das verwenden) nur 2200 Parameter pro Batch verarbeiten kann. Beschränken Sie daher Ihre Batchgröße, um dies zu berücksichtigen. Und ich würde empfehlen, parametrisierte TSQL-Anweisungen zu verwenden, um die Einsätze durchzuführen. Ich vermute, dass mehr Zeit damit verbracht wird, Datensätze einzufügen, als sie aus der Datei zu lesen.
Wie streng sind die zeitlichen Einschränkungen? – Jake