Laden...

MSSQL Massendateninsert ohne BULK

Erstellt von Andreas@Tricept vor 11 Jahren Letzter Beitrag vor 11 Jahren 708 Views
A
Andreas@Tricept Themenstarter:in
289 Beiträge seit 2006
vor 11 Jahren
MSSQL Massendateninsert ohne BULK

Verwendete DB: MSSQL

Hallo zusammen,

ich habe einen Fatclient und der hat eine Importmöglichkeit. Einige CSV-Dateien von Kunden haben mehrere Millionen Einträge die ich zu Hunderttausenden verdichte und importiere. Mittels BULK System läuft das wunderbar und der gesamte Vorgang dauert nur wenige Minuten.
Das Problem mit dem BULK habe ich leider bei Kunden die ihren Server ausgelagert haben und der Fatclient keinen Dateizugriff auf den DB-Server hat. Also ich kann keine Datei im Verfügbarkeitsbereich des Servers ablegen. Die BULK-Datei muss ja zwingend auf dem PC des Servers liegen.

In Oracle bietet der TableAdapter schon eine Massendatenspeicherung an die zwar etwas langsamer als BULK ist, jedoch auch ein zufriedenstellendes Ergebnis liefert. Gibt es auch für SQL eine Möglichkeit Massendaten über die Verbindung direkt an den Server zu schicken? Mit einzelnen Commands oder DataSets warte ich mir einen Wolf.

Grüße
Andreas

1.346 Beiträge seit 2008
vor 11 Jahren

Hallo!

Du kannst versuchen viele Daten zusammen in einer Transaction zu übertragen.

LG pdelvo

742 Beiträge seit 2005
vor 11 Jahren

Was ist mit der SqlBulkCopy Klasse? Kann auch aus DataTable importieren, eigener IDataReader geht auch.

F
10.010 Beiträge seit 2004
vor 11 Jahren

@Andreas@Tricept:
Du kennst Bulk und weist das es um den Sql Server geht, warum suchst du dann nicht zuerst in der Doku?
Dann hättest Du ganz bestimmt SqlBulkCopy gefunden.
Und da gibt es in verbindung mit dem schnellen CsvReader auch ganz schnell was bei Google gefunden.

Edit:
malignate war schneller.

A
Andreas@Tricept Themenstarter:in
289 Beiträge seit 2006
vor 11 Jahren

Oh super vielen vielen Dank euch. Bin leider bei meiner Suche nicht auf die SqlBulkCopy gekommen, weil ich Bulk automatisch mit einem Datei gestützten Import impliziert habe.

Nächstes mal suche ich besser ! 😉