c 中高效的excel匯入sqlserver的方法

2021-09-22 10:54:43 字數 1160 閱讀 8203

將oledb讀取的excel資料快速插入的sqlserver中,很多人通過迴圈來拼接sql,這樣做不但容易出錯而且效率低下,最好的辦法是使用bcp,也就是system.data.sqlclient.sqlbulkcopy 類來實現。不但速度快,而且**簡單,下面測試**匯入乙個6萬多條資料的sheet,包括讀取(全部讀取比較慢)在我的開發環境中只需要10秒左右,而真正的匯入過程只需要4.5秒。

private void button1_click(object sender, eventargs e)

}public void transferdata(string excelfile, string sheetname, string connectionstring)

$]", sheetname);

mycommand = new oledbdataadapter(strexcel, strconn);

mycommand.fill(ds, sheetname);

//如果目標表不存在則建立

string strsql = string.format("if object_id('') is null create table (", sheetname);

foreach (system.data.datacolumn c in ds.tables[0].columns)

] varchar(255),", c.columnname);

}strsql = strsql.trim(',') + ")";

using (system.data.sqlclient.sqlconnection sqlconn = new system.data.sqlclient.sqlconnection(connectionstring))

//用bcp匯入資料

using (system.data.sqlclient.sqlbulkcopy bcp = new system.data.sqlclient.sqlbulkcopy(connectionstring))

}catch (exception ex)

}//進度顯示

void bcp_sqlrowscopied(object sender, system.data.sqlclient.sqlrowscopiedeventargs e)}}

獲取excel結構的方法可以參考我先前的文章

c 中高效的excel匯入sqlserver的方法

將oledb讀取的excel資料快速插入的sqlserver中,很多人通過迴圈來拼接sql,這樣做不但容易出錯而且效率低下,最好的辦法是使用 bcp,也就是system.data.sqlclient.sqlbulkcopy 類來實現。不但速度快,而且 簡單,下面測試 匯入乙個6萬多條資料的sheet...

c 中高效的excel匯入sqlserver的方法

將oledb讀取的excel資料快速插入的sqlserver中,很多人通過迴圈來拼接sql,這樣做不但容易出錯而且效率低下,最好的辦法是使用bcp,也就是system.data.sqlclient.sqlbulkcopy 類來實現。不但速度快,而且 簡單,下面測試 匯入乙個6萬多條資料的sheet,...

c 中高效的excel匯入sqlserver的方法

將oledb讀取的excel資料快速插入的sqlserver中,很多人通過迴圈來拼接sql,這樣做不但容易出錯而且效率低下,最好的辦法是使用bcp,也就是system.data.sqlclient.sqlbulkcopy 類來實現。不但速度快,而且 簡單,下面測試 匯入乙個6萬多條資料的sheet,...