关于C#导入excel 数据到 数据库

运行环境win7vs2010sqlserver20082G内存CPUI33702.5GHz想用c#winform环境下将excel的数据导入到数据库中用下面代码导入少量数... 运行环境 win7 vs2010 sql server 2008 2G内存 CPU I3 370 2.5GHz
想用c# winform 环境下 将 excel 的数据导入到数据库中
用下面代码导入少量数据,几百条没什么压力,但是做了一个5w多行的excel表,初步估计一秒钟大概就两三百行地读取进去。请问可以把代码修改下,使效率快点么??还有就是假若导入数据库过程中,突然发生中断,怎么删除原来导入的数据??类似与事务回滚的。。跪求大神指导,代码如下
string strCon = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:\\test.xlsx" + ";Extended Properties=Excel 12.0;";
OleDbConnection conn = new OleDbConnection(strConn);
OleDbDataAdapter adapter = new OleDbDataAdapter("select * from [Sheet1$]", conn);
DataSet dataset = new DataSet();
adapter.Fill(dataset,"[Sheet1$]");
////////////////////////////////////////////////////////////////////////
SqlConnection conSql = new SqlConnection("Server=(local);database=StudentDataBase;uid=sa;pwd=xxxxxxxxxxxxxxxx");
SqlDataAdapter ada = new SqlDataAdapter("select * from student2", conSql);
DataSet st = new DataSet();
ada.Fill(st, "student2");
for (int i = 0; i < dataset.Tables[0].Rows.Count; i++)
{

st.Tables[0].LoadDataRow(dataset.Tables[0].Rows[i].ItemArray, LoadOption.Upsert);

}
SqlCommandBuilder bul = new SqlCommandBuilder(ada);
ada.Update(st.Tables[0]);
展开
 我来答
三尺荟
推荐于2016-08-07 · TA获得超过627个赞
知道小有建树答主
回答量:451
采纳率:100%
帮助的人:267万
展开全部
这种方式对几万以上数据量当然头疼,看你代码,应该是excel至sqlserver,你可以尝试下我导入access的方法,因为sqlser与access都是微软的,所以相似性很高:
思路上,不是用循环逐条填入,而是用access或sqlserver的分析器或Dts自动完成导入过程。
因为目前研发的系统环境不在手边,你将就下,希望能搞定。
将excel导入access,一句sql搞定
select * from [Sheet1$] IN "d:\tmpExcel.xls" "EXCEL 8.0;"
在access中,这样就能查找excel的表记录,相同的,你可以将结果导出至新表,如select into,或insert into将结果保存。此法后台直接由access负责执行,其效率你懂的

SELECT field1[, field2[, ...]] INTO newtable [IN externaldatabase]
FROM source
//select * from [sheet1$] into newTable in "d:\tmpExcel.xls" "excel 8.0"

INSERT INTO target [(field1[, field2[, ...]])]
VALUES (value1[, value2[, ...])
//insert into newTable(col1,col2,col3) Select col1,col2,col3) from [sheet1$] in "d:\tmpExcel.xls" "excel 8.0"

因为不知你导入的数据是研发用,还是用户用,若是研发用,那么手工导入就更方便了 用access的导入,或sqlserver的dts导入功能,然后选择excel的列字段一个个对应就好。
此刻,你应该不急着将sql代码放入程序执行,而是在查询分析器中先运行,这样有利于检查语法和导入的性能。
glslian14cce7
2013-07-06 · TA获得超过1541个赞
知道小有建树答主
回答量:1389
采纳率:81%
帮助的人:558万
展开全部
不使用COM组件导入,使用datatable导入。它是先缓存导入,如果没有导出成功则会清理缓存。
这里有个事例楼主可以看看http://www.glslian.com/article.asp?id=51
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式