2010-09-07 8 views
8

Neugierig, wenn das möglich ist: Der App-Server und der DB-Server leben (offensichtlich) an verschiedenen Stellen. Der App-Server generiert derzeit eine Datei zur Verwendung mit der Masseneinfügung von SQL Server.Ist es möglich, sql server bulk insert ohne Datei zu verwenden?

Dies erfordert, dass sowohl die Datenbank als auch der Anwendungsserver den Standort sehen können und die Konfiguration in verschiedenen Umgebungen schwieriger wird.

Was ich gerne wissen würde: ist es möglich, das Dateisystem in diesem Fall zu umgehen? Vielleicht kann ich die Daten an SQL-Server übergeben und die Datei generieren lassen?

Ich bin auf SQL Server 2008, wenn das einen Unterschied macht.

danke!

Antwort

12

Ich glaube nicht, dass Sie dies mit dem Bulkcp-Tool von SQL Server tun können, aber wenn Ihre Anwendung mit .NET geschrieben wird, können Sie die System.Data.SqlClient.SqlBulkCopy-Klasse zum Einfügen von Zeilen aus einer Datentabelle verwenden (oder jede Datenquelle, auf die Sie mit einem SqlDataReader zugreifen können).

+3

Sie meinen mit einem 'IDataReader'. – SLaks

+0

Um das hinzuzufügen: Es ist ziemlich einfach, eine Klasse implementieren iDataReader durch Lesen von Informationen aus einem Array. Wenn Sie in einer SQL-Datenbank eine Reihe von Informationen speichern möchten, die in einem Array gespeichert sind, ist das ein guter Weg, dies zu tun. – supercat

+0

@Slaks, ja, ich war zu spezifisch. – Chris

1

Aus der Dokumentation auf Masseneinfügung:

BULK INSERT 
    [ database_name. [ schema_name ] . | schema_name. ] [ table_name | view_name ] 
     FROM 'data_file' 

Die FROM 'data_file' ist nicht optional und wird als solche angegeben:

'data_file' Ist der vollständige Pfad der Datendatei Diese enthält Daten zum Importieren in die angegebene Tabelle oder Ansicht . BULK INSERT kann Daten von einer Festplatte (einschließlich Netzwerk, Diskette, Festplatte und usw.) importieren.

data_file muss einen gültigen Pfad vom Server angeben, auf dem SQL Server ausgeführt wird. Wenn data_file eine Remote-Datei ist, geben Sie den Universal Convention (UNC) -Namen an. Ein UNC-Name hat das Formular \ Systemname \ Freigabename \ Pfad \ Dateiname. Zum Beispiel \ SystemX \ DiskZ \ Sales \ update.txt.

Ihre Anwendung könnte die Einfügung direkt mit jeder Methode durchführen, die Ihren Leistungsanforderungen entspricht.

Verwandte Themen