使用SQLBULKCOPY提高匯入資料的效能

2022-03-21 16:54:10 字數 1376 閱讀 9152

向sql server中匯入大量數量可以用bulk insert,但是必須要求插入的檔案在資料庫機器上或者乙個資料庫可以訪問的共享資料夾中(我不知道怎麼設定共享資料夾,以使得sql server能訪問到)

sqlbulkcopy 是.net中的乙個類,提供了匯入大量資料的功能。

基本用法如下:

using 

(sqlbulkcopy

bc =

new

sqlbulkcopy

(sqlconn,

sqlbulkcopyoptions

.tablelock |

sqlbulkcopyoptions

.useinternaltransaction,

null

))

自己可以寫**來實現繼承自idatareader的類。有n多成員要實現。。。

比如fieldcount, read(), getvalue(int i), close()等

下面是乙個讀檔案的例子:

view code

//

返回記錄的列數

public

intfieldcount

}//讀記錄,此方法會被自動呼叫

public

bool

read()

return

true

; }

return

false

; }

//返回一條記錄中第i 列(項)的值,此方法會被自動呼叫

//sqlbulkcopy內部應該有乙個迴圈,從0到fieldcount -1 ,再呼叫getvalue(int i)這個方法。我猜的。。。

public

object getvalue(int

i)

}//釋放資源

public

void

close()

public

void

dispose()

有一些其他屬性其方法需要自己實現,當然有的不實現也沒關係。似乎重要的就以上幾個方法了。

對照sqldataread,自己可以猜想出會用到哪些方法。

經過實驗,乙個檔案如果一行一行插入到資料庫裡,需要大約2分鐘,如果用sqlbulkcopy 10秒左右就完成了。而且可以自己實現類來指定處理什麼資料,也不用把檔案放在資料庫機器上了。不錯。

忘說了,sqlbulkcopy裡用到的connction物件只能是sqlconnection。sqlbulkcopy.writetoserver (datarow]) 和sqlbulkcopy.writetoserver (datatable) 都是可以的。

SqlBulkCopy的使用問題

在企業資訊化的過程中,使用了分層,資料庫介質使用sqlserver,開發平台使用.net,idevs2008。建立了乙個資料庫訪問層的類dal,其中有乙個功能,就是將乙個dataset儲存到資料庫中,這裡面就用到了sqlbulkcopy這個類。開始對使用sqlbulkcopy有些認識不清,特別是其事...

SQLBulkCopy使用 sql批量新增

sqlbulkcopy,用於資料庫之間大批量的資料傳遞。通常用於新,舊資料庫之間資料的更新。即使表結構完全不同,也可以通過欄位間的對應關係,順利的將資料導過來。首先,sqlbulkcopy需要2個連線。分別連線到不同的舊表所在的資料庫,新錶所在的資料庫。如果是同乙個資料庫,就可以用同乙個sqlcon...

使用 SqlBulkCopy 批量插入資料

使用sqlbulkcopy將datatable中的資料批量插入資料庫中 資料庫中對應的表名 資料集 中英文對應字典 public string sqlbulkcopyinsert string connstr,string strtablename,datatable dtdata,dictiona...