上传excel文件记录到数据库

风车呼噜噜 2012-05-24 04:52:29
最近遇到这样一个问题,我要将excel中的数据导入到数据库,字段比较多,大概50个吧,上传3000条记录需要一个小时,
实在有点太慢了,请高手指点如何优化一下。

另外,我每执行一条sql 语句都 会新建 sqlconnection 对象并连接数据库,用完后关闭,这样对性能会有大的影响吗?
...全文
109 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
lusens 2012-05-24
  • 打赏
  • 举报
回复
第一:如何读取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;
}

第二:肯定不能每次打开数据库连接,直接一次将DataTable内的数据插入数据库,然后关闭连接。
二当家 2012-05-24
  • 打赏
  • 举报
回复
开关数据库连接对象 肯定影响效率啊

拼接了以后再提交吧

1个小时确实太夸张了
licai1210 2012-05-24
  • 打赏
  • 举报
回复
insert tb(字段1,字段2) 你的集合
或者你用事物就好了,那样就是一次连接了
可以用Adapter.Update()
存储过程处理

62,268

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧