且其效能會比一筆一筆 insert into 來的好。
舉例來說,你有個文字檔,其內容如下:
===== list.txt ==== 李志堅,aa@3probe.com.tw 馮世華,bb@3probe.com.tw 洪崇富,cc@3probe.com.tw
測試資料表:
CREATE TABLE [dbo].[BULKTest]( [BName] [nvarchar](50) NULL, [BMail] [nvarchar](100) NULL )
在 SQL 下,就可以執行以下指令來匯入資料到DB
BULK insert BULKTest from 'C:\MailList.txt' WITH (FIELDTERMINATOR = ',')
為了實際比較效能,另外寫了一段程式來比較:
declare @count int set @count=0 while @count<100000 begin insert into BULKTest (BName,BMail) values (N'李志堅','aa@3probe.com.tw') set @count=@count+1 end
BULK insert BULKTest from '\\GroupServer\share\test\MailList.txt' WITH (FIELDTERMINATOR = ',')
結果是正常的。 如果您的資料量是好幾G以上的,建議可以參考一下「黑暗執行緒」的一篇 BULK INSERT Performance, 他提到有關 Log 資料增長的問題,因為大量新增資料後,留下的 Log 紀錄可能會灌暴硬碟空間,裡面介紹 一些參數與設定,讓你在使用 BULK Insert 時不留下 Log。 綜整所謂完美範本如下以茲盜拷:
BULK INSERT BULKTest FROM 'C:\MailList.txt' WITH ( BATCHSIZE = 1000, FIELDTERMINATOR = ',', ROWTERMINATOR = '\n', TABLOCK )
參考資料:Using BULK INSERT to Load a Text File
沒有留言:
張貼留言