Excel匯入SqlServer資料庫 一

2021-05-27 13:11:19 字數 2151 閱讀 4606

業務中經常會遇到批量匯入資料庫的操作,今天總結一下方法.

本文利用三層的架構的思想。將整個業務分成三部分,分別是介面,業務和資料處理。

先介紹第一種方法:

即先將excel**的內容轉化到datatable中,然後再將datatable匯入到sqlserver資料庫.         

下面看乙個小demo

介面上用到的控制項是fileupload和button

protected void btnimport_click(object sender, eventargs e)

獲得檔案的副檔名

string fileext = system.io.path.getextension(fupimport.filename).tostring().tolower();

if (fileext == ".xls" || fileext == ".xlsx")

}else

if (system.io.file.exists(path))

else

}

邏輯層的主要任務是將介面傳過來的excel轉化到datatable中,並將datatable傳給dal層處理.因為讀取excel的操作不是針對的sql,而是用的oledb,所以放到了邏輯層.

/// /// 將坐在路徑的excel中的內容寫入到datatable中

///

/// 需要匯入的excel的路徑

/// 返回true 或false

public bool exceltodatatable(string strpath)

$]", strsheetname); 這是一種方法

//string strexcel = "select * from [" + sheetname + "]";

string strexcel = "select * from [sheet1$]";

//定義存放的資料表

dataset ds = new dataset();

//連線資料來源

oledbdataadapter adapter = new oledbdataadapter(strexcel, objconn);

//將excel表中內容填入ds中

adapter.fill(ds, sheetname);

//呼叫d層方法

return new dal().batchinsertdata("user_info", ds.tables[sheetname]);

}catch (sqlexception ex)

finally

}

d層,具體處理,將得到的datatable批量匯入到sql中

/// /// 將傳過來的datatable匯入到sql

///

/// 要匯入的sql資料庫表名

/// 待匯入的資料表

///

public bool batchinsertdata(string strtablename, datatable dt)

//匯入

sqlbulk.writetoserver(dt);

//匯入成功

blnresult = true;

}catch (exception)

finally

return blnresult;

}

這樣通過兩次呼叫,excel就可以順利匯入資料庫了,這種方法必須是資料庫字段》=excel表的字段,而且匯入時是預設從左到右字段一一對應,如果不需要匯入和資料庫相等的字段,且字段不連續,可以用陣列進行欄位的控制.

在資料庫進行對映時的**如下,其他**相同,不再贅述.

int intsqlfeild = ;

for (int i = 0; i < dt.columns.count; i++)

通過這種方式可以將excel表的資料和資料庫靈活繫結.但相對來說**較多.

ps:由於本文著重實現功能,這個demo的復用性可能不好,如果工程中很多表,很多資料庫中需要用到,可以進行重構,將關於表和資料庫的內容提取出來,寫成要傳的引數或者配置檔案.b層和d層的方法也可以更細的拆分.

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,...