2015-10-04 52 views
2

我的文本文件是我怎樣才能加快在SQL數據庫表中插入文本文件?

Town 1, Street Address, Street number 1, Region 1, 125 07 
Town 1, Street Address 12, Street number 1, Region 34, 141 07 
Town 2, Street Address 345, Street number 1, Region 23, 190 07 
Town 2, Street Address 233, Street number 1, Region , 190 11 

我目前做的插入在SQL數據庫表如下。

var fileContents = System.IO.File.ReadAllText(Server.MapPath(@"~/App_Data/zipcodes.txt"), Encoding.GetEncoding(1253)); 
var Line = fileContents.Split(new string[] {"\n", "\r\n"}, StringSplitOptions.RemoveEmptyEntries); 
var Array = new string[5]; 
foreach (string s in Line) 
    { 
     Array = s.Split(','); 
     storeDB.ZipCodes.Add(new ZipCodes {Town = Array[0], 
              StreetAddress = Array[1], 
              StreetNumber = Array[2], 
              Region = Array[3], 
              PostalCode = Array[4].Replace(" ", "")}); 
    } 
    storeDB.SaveChanges(); 

由於該文件包含50000+條記錄,我想以另一種方式插入,速度更快。任何建議?

+0

導入CSV usisng SSMS – lad2025

+0

@ lad2025我想通過代碼來做到這一點 – OrElse

+1

'BULK INSERT your_table FROM '......的App_Data/zipcodes.txt' WITH ( FIELDTERMINATOR =',', ROWTERMINATOR ='\ n' )' – lad2025

回答

2

您可以使用BULK INSERT

BULK INSERT db_name.schema.table 
FROM '...path .../zipcodes.txt' 
WITH ( 
    FIELDTERMINATOR = ',', 
    ROWTERMINATOR = '\n' 
    ); 

有許多配置可在需要時像CODEPAGEFIRSTROW等等...

+0

我想我正在做一些非常錯誤的事情。對於第1行,列的批量加載數據轉換錯誤(類型不匹配或指定代碼頁的字符無效) 1(ZipCodesID)。 – OrElse

+0

@OrElse我不知道你的表格和完整的文件結構,但是你可以指定'FORMAT FILE'像[這裏](http://www.bidn.com/blogs/marcoadf/bidn-blog/2479/bulk-insert -format文件跳過列)。重點是文件和表格必須相互對應 – lad2025

相關問題