Schneller und einfacher Weg, um CSV nach SQL Server zu importieren

9

Wir importieren eine csv-Datei mit CSVReader und verwenden dann SqlBulkCopy , um diese Daten in SQL Server einzufügen. Dieser Code funktioniert für uns und ist sehr einfach, aber wir fragen uns, ob es eine schnellere Methode gibt (einige unserer Dateien haben 100000 Zeilen), die auch nicht zu komplex werden würde?

%Vor%     
Austin Harris 08.01.2016, 01:05
quelle

2 Antworten

3

Anstatt Ihr eigenes Tool dafür zu erstellen, sehen Sie sich SQL Server-Import und -Export / SSIS. Sie können Flat Files und SQL Server-Datenbanken direkt anvisieren. Die Ausgabe dtsx -Paket kann auch über die Befehlszeile oder als Auftrag über den SQL Server-Agent ausgeführt werden.

Der Grund, warum ich es vorschlage, ist, weil der Assistent für Parallelität optimiert ist und sehr gut auf großen flachen Dateien funktioniert.

    
Mario Tacke 08.01.2016 01:11
quelle
1

Sie sollten in Betracht ziehen, einen Tabellenwertparameter (TVP) zu verwenden, der auf einem benutzerdefinierten Tabellen-Typ (User-Defined Table Type, UDTT) basiert. Diese Fähigkeit wurde in SQL Server 2008 eingeführt und ermöglicht es Ihnen, eine stark typisierte Struktur zu definieren, die zum Streamen von Daten in SQL Server verwendet werden kann (wenn dies ordnungsgemäß durchgeführt wird). Ein Vorteil dieses Ansatzes gegenüber der Verwendung von SqlBulkCopy ist, dass Sie mehr als eine einfache INSERT in eine Tabelle tun können; Sie können jede gewünschte Logik (validate / upsert / etc) ausführen, da die Daten in Form einer Tabellenvariablen ankommen. Sie können mit der gesamten Importlogik in einer einzigen Stored Procedure arbeiten, die lokale temporäre Tabellen einfach verwenden kann, wenn eine der Daten zuerst bereitgestellt werden muss. Dies macht es sehr einfach, den Prozess so zu isolieren, dass Sie mehrere Instanzen gleichzeitig ausführen können, solange Sie die zu importierenden Zeilen logisch trennen können.

Ich habe eine ausführliche Antwort zu diesem Thema hier auf S.O. Vor einiger Zeit, einschließlich Beispielcode und Links zu anderen Informationen:

How Kann ich 10 Millionen Datensätze in kürzester Zeit einfügen?

Es gibt sogar einen Link zu einer verwandten Antwort von mir, die eine weitere Variation zu diesem Thema zeigt. Ich habe irgendwo eine dritte Antwort, die einen Stapelansatz zeigt, wenn Sie Millionen von Zeilen haben, was Sie nicht tun, aber sobald ich finde, werde ich den Link hier hinzufügen.

    
Solomon Rutzky 08.01.2016 02:15
quelle

Tags und Links