2010-09-07 22 views
8

好奇,如果這是可能的:應用程序服務器和數據庫服務器住在不同的地方(顯然)。應用程序服務器當前生成一個用於sql server批量插入的文件。是否可以使用沒有文件的sql server批量插入?

這要求數據庫和應用程序服務器都能夠看到位置,並且會在不同的環境中使配置更加困難。

我想知道的是:在這種情況下是否可以繞過文件系統?也許我可以將數據傳遞給sql server並讓它生成文件?

我在sql server 2008上,如果這有所作爲。

謝謝!

回答

12

我不認爲你可以用SQL Server的bulkcp工具做到這一點,但是如果你的應用是用.NET編寫的,你可以使用System.Data.SqlClient.SqlBulkCopy類從數據表中批量插入行(或者可以使用SqlDataReader訪問的任何數據源)。

+3

你的意思是用'IDataReader'。 – SLaks 2010-09-07 18:30:22

+0

補充:通過讀取數組中的信息,實現一個類實現iDataReader非常簡單。如果您想要在SQL數據庫中存儲一組存儲在數組中的信息,那麼這是一個很好的方法。 – supercat 2010-09-07 19:20:13

+0

@Slaks,是的,我太具體了。 – Chris 2010-09-07 19:29:38

1

從上批量插入的文檔:

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

的FROM 'DATA_FILE' 不是可選的,並且被指定爲這樣:

'DATA_FILE' 是對數據文件的完整路徑包含要導入到 指定的表或視圖的數據。 BULK INSERT 可以從磁盤導入數據(包括 網絡,軟盤,硬盤和 等)。

data_file必須從運行SQL Server爲 的服務器指定有效路徑 。如果data_file是遠程文件 ,請指定通用命名 約定(UNC)名稱。 UNC名稱的格式爲 \ Systemname \ ShareName \ Path \ FileName。例如, \ SystemX \ DiskZ \ Sales \ update.txt。

您的應用程序可以使用任何方法直接插入,以滿足您的性能需求。