导入EXCEL

qinzhuhua 2010-06-30 11:11:07
我要把excel文件中的数据导入到SQL数据库中,但是当excel文件中数据量过大时,导入就非常慢
主要有两个地方影响速度:
1、因为我导入时,需要判断导入的数据是否在数据库中已存在,所以我用了dataview.RowFilter对数据进行检索,
判断是否已存在当前数据
2、excel中数据量太多

怎样才能提高导入的速度,请高手帮忙!!谢谢!!
...全文
120 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
pt1314917 2010-06-30
  • 打赏
  • 举报
回复
[Quote=引用楼主 qinzhuhua 的回复:]
我要把excel文件中的数据导入到SQL数据库中,但是当excel文件中数据量过大时,导入就非常慢
主要有两个地方影响速度:
1、因为我导入时,需要判断导入的数据是否在数据库中已存在,所以我用了dataview.RowFilter对数据进行检索,
判断是否已存在当前数据
2、excel中数据量太多

怎样才能提高导入的速度,请高手帮忙!!谢谢!!
[/Quote]
在程序中导入如果太慢的话,可以考虑通过sql语句直接导入到数据库。。会快一些。至于要处理一些重复数据,最好先将所有数据导入一临时表,然后再通过sql语句将临时表中不存在的数据插入目标表中。
如:

--将数据导入临时表.database即excel路径,sheet1为excel工作薄名称
select * into # from OPENROWSET('microsoft.jet.oledb.4.0','Excel 5.0;hdr=yes;database=d:\1月安排.xls',sheet1$)
--将临时表与目标表不存在的数据插入目标表
insert into 目标表 select * from # a where not exists
(select 1 from 目标表 where name=a.name)--这里也可以写其他字段。。

anbin0814 2010-06-30
  • 打赏
  • 举报
回复
用bulk insert
qinzhuhua 2010-06-30
  • 打赏
  • 举报
回复
因为有好多地方都要做了导入功能,所以不可能再换别的方法
只能用读取excel中数据,再插入数据库的这种方法
只可能提高一下它的速度就可以了
LovingAlison 2010-06-30
  • 打赏
  • 举报
回复
下个Aspose.Cells.dll试试看
永生天地 2010-06-30
  • 打赏
  • 举报
回复
http://blog.csdn.net/xys_777/archive/2010/06/16/5673992.aspx
永生天地 2010-06-30
  • 打赏
  • 举报
回复
excel的数据如果比较规范可以用sql server的openrowset

110,567

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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