2010-10-20 5 views
6

SqlBulkCopy Kann eine Tabelle erstellen, wie eine Art von SELECT INTO?Kann SqlBulkCopy eine Tabelle aus einer Auswahl Sql erstellen

+0

Ich möchte Daten aus einer Oracle-Datenbank in eine SQL Server-Datenbank verschieben, und möchten das Ziel haben Tabellen automatisch erstellt werden, ist dies möglich SqlBulkCopy mit? –

Antwort

0

Es scheint, dass SqlBulkCopy nicht Tabellen selbst erstellen können. Die Zieltabelle muss vordefiniert sein. In dem Fall, dass das Ziel eine automatische inkrementelle Identität (int) erhalten hat, verwenden Sie nur eine 1 in der select-Anweisung heißt

SELECT 
    1, 
    [ColumnName], 
    [ColumnName]... 
FROM TABLENAME 

SQL Server die Autoinkrement selbst behandeln.

+0

Was ist, wenn die Datei jedes Mal anders ist, gibt es sie nicht, kann sie die Tabelle im laufenden Betrieb erstellen? – Si8

0

denke ich Antwort oben nicht ganz klar war.

Sie müssen Tabelle mit SQL erstellen. Es geht nicht anders. Und wenn Sie gerade brauchen Säulenstruktur zu schaffen, dann ist es ganz einfach, wenn Ihre Quelle in demselben Server ist, genügt es, dies zu tun:

Select * from source_table into destination_table where 1=2 

Wenn die Quelle nicht in demselben Server (zB es ist Excel-Datei oder dbf oder was auch immer), die einfachste Sache zu tun ist, um es mit ODBC (oder SQL wenn möglich) zu verbinden, und sendet ihn an:

Select * from source_table where 1=2 

und dann Ergebnis in Datatable zu sammeln. Dann sollten Sie im zweiten Schritt eine gespeicherte Prozedur auf Ihrem Zielserver erstellen, die diese Tabelle als Argument verwendet und sie dann in die neue Tabelle einfügt.

genauer gesagt ein bisschen, versuchen Sie dies für SQL-Prozedur: http://www.builderau.com.au/program/sqlserver/soa/Passing-table-valued-parameters-in-SQL-Server-2008/0,339028455,339282577,00.htm

Und schaffen SqlCommnand Objekt in C# und fügen Sie seine Parameter Sammlung SqlParameter die SqlDbType.Structured ist

ich nicht jeden in einzelne ging Detail, aber hoffe, dass es helfen kann.