上传excel文件记录到数据库
最近遇到这样一个问题,我要将excel中的数据导入到数据库,字段比较多,大概50个吧,上传3000条记录需要一个小时,
实在有点太慢了,请高手指点如何优化一下。
另外,我每执行一条sql 语句都 会新建 sqlconnection 对象并连接数据库,用完后关闭,这样对性能会有大的影响吗?
[解决办法]
insert tb(字段1,字段2) 你的集合
或者你用事物就好了,那样就是一次连接了
可以用Adapter.Update()
存储过程处理
[解决办法]
开关数据库连接对象 肯定影响效率啊
拼接了以后再提交吧
1个小时确实太夸张了
[解决办法]
第一:如何读取Excel数据很重要,肯定不能轮询读取,用下面的函数读数据
/// <summary> /// 读取用户指定WorkSheet的数据,作为DataTable输出 /// </summary> /// <param name="excelFilePath">被读取的Excel文档路径</param> /// <param name="HeadRowAsColumnCaption">是否将Excel第一行作为DataTable表头输出</param> /// <param name="workSheetName">被读取的WorkSheet名称</param> /// <returns></returns> public static System.Data.DataTable ReadExcelToDataTable(string excelFilePath, bool HeadRowAsColumnCaption, string workSheetName) { System.Data.DataTable dataTable = new System.Data.DataTable(); System.Data.OleDb.OleDbConnection conn = GetConnection(excelFilePath, HeadRowAsColumnCaption); if (conn != null) { conn.Open(); string strSql = "select * from [" + workSheetName + "$]"; System.Data.OleDb.OleDbDataAdapter sda = new System.Data.OleDb.OleDbDataAdapter(strSql, conn); dataTable.TableName = workSheetName; sda.Fill(dataTable); conn.Close(); } return dataTable; }