2010-12-15 2 views
0

Ich habe eine SQL-Prozedur, die 20.000 + Datensätze zurückgibt und diese Daten in eine CSV für eine SQL2005-Massenladeoperation erhalten möchten.Was ist der beste Weg, um eine große Menge an SQL-Daten in .net zu laden und eine CSV-Datei zu generieren?

ich denke, die Verwendung eines Datensatzes ist Overkill, da ich nur vorwärts Lesezugriff auf die Daten nur benötigen.

jetzt habe ich einen Datenleser, aber denken Sie nicht, dass das Iterieren des Datenlesers eine gute Idee ist, weil es den Orakel-DB sperrt, den ich die 20.000 Aufzeichnungen seit einiger Zeit bekomme, während es getan seine Sache erledigt.

logischerweise denke ich, um einen getrennten Snapshot der Daten in einer Datentabelle vielleicht zu erstellen und das zu verwenden, um meine csv-Datei zu generieren.

ich entwickle solche ETL-Apps nicht oft, also wollte ich wissen, was der Goldstandard bei dieser Art von Operation ist.

Gedanken?

auch, erlauben Sie mir zu erwähnen, dass dies eine Konsolen-App sein muss, da CORP-Regeln Verbindungsserver und etwas cooles nicht zulassen werden - so bedeutet das, dass SSIS out ist.

+0

Wenn ich es nicht falsch lese, widerspricht sich Ihre Frage. "Ich denke, die Verwendung eines Datensatzes ist Overkill, da ich nur Lesezugriff nur vorwärts benötigen" vs "ich denke, um einen getrennten Schnappschuss der Daten in einer Datentabelle zu erstellen". –

Antwort

1

Da Sie besorgt sind, die Iteration des Datenreaders selbst durchzuführen, kann ich die SqlBulkCopy-Klasse empfehlen.

Damit können Sie Daten in eine SQL Server-Datenbank aus einer beliebigen Quelle laden, als sie

könnte lösen Ihre potentiellen Verriegelungs Problem mit einem IDataReader Instanz gelesen werden.

+0

+1 Dies funktioniert gut für MS SQL Server-Ziele, wenn Sie versuchen, eine einzelne Tabelle auf einmal zu füllen. Es löst das Extraktionsproblem nicht, wenn Sie eine CSV-Zwischendatei möchten. –

Verwandte Themen