2010-12-02 14 views
0

Ich bin kein guter SQL-Programmierer, ich habe nur die Grundlagen, aber ich habe von einigen BCP-Sache für das schnelle Laden von Daten gehört. Ich habe das Internet durchsucht und es scheint ein reines Befehlszeilenprogramm zu sein und nicht etwas, das Sie im Code verwenden können.Fast Batch einfügen/update mit SQL Server 2008 und BCP

Die Sache ist, ich möchte in der Lage sein, sehr schnelle Einfügungen und Updates in einer SQL Server 2008-Datenbank zu machen. Ich möchte eine Funktion in der Datenbank haben, akzeptieren würde:

  • Der Name der Tabelle I gegen einen Einsatz/Update-Operation ausführen wollen
  • Die Namen der Spalten werde ich Fütterung Daten zu
  • die Daten im CSV-Format oder etwas, das SQL Wetter dumm schnelle
  • ein Flag lesen kann, die Funktion anzeigt, sollte ein Einfüge- oder Aktualisierungsoperation

Diese Funktion dann diese CSV strin lesen würde ausführen g und generiere den notwendigen Code zum Einfügen/Aktualisieren der Tabelle.

Ich würde dann Code in C# schreiben, um diese Funktion zu benennen und den Tabellennamen, Spaltennamen, eine Liste von serialisierten Objekten als CSV-String und das Einfüge-/Aktualisierungs-Flag zu übergeben.

Wie Sie sehen können, soll dies sowohl schnell als auch generisch sein, geeignet für jedes Projekt, das mit großen Datenmengen arbeitet, und somit ein Kandidat für den Rahmen meines Unternehmens.

denke ich richtig? Ist das eine gute Idee? Kann ich dieses BCP-Ding benutzen und ist es für jeden Fall geeignet?

Wie Sie sehen können, brauche ich einige Anweisungen dazu ... Vielen Dank im Voraus für jede Hilfe!

+0

Wie viele Zeilen Sie Einfügen/Aktualisieren? – Sam

+0

Nun, es ist normalerweise etwas um 10.000, aber manchmal wird es 500.000 oder noch mehr. –

Antwort

1

In C#, siehe SQLBulkCopy. Es ist, was SSIS im Hintergrund verwendet.

Für einen echten bcp/BULK INSERT, würden Sie bulkadmin Rechte benötigen, die erlaubt werden kann, nicht

+1

"Sie würden Bulkadmin-Rechte benötigen" - Und es ist am besten, keine verrückten Sicherheitsmaßnahmen zu ergreifen, wenn Sie ein Framework für etwas erstellen. – Sam

+0

Schön, ich wusste nicht über die SqlBulkCopy-Klasse. Sieht so aus, als wäre es das Richtige für mich. Vielen Dank! –

+0

@Sam: yep, oder darf nicht in Ihrem Geschäft erlaubt werden. KISS etc :-) – gbn

1

Haben Sie in Betracht gezogen, SQL Server Integrated Services (SSIS) zu verwenden? Es wurde entwickelt, genau das zu tun, was Sie beschreiben. Es ist sehr schnell. Sie können Daten auf Transaktionsbasis einfügen. Und Sie können es so einrichten, dass es nach einem Zeitplan ausgeführt wird. Und vieles mehr.