Excel大批量导入数据到SQLServer数据库-万条只用1秒
private string ExcelToStudent()
{
/*---*/
var preStr = DateTime.Now.ToString("yyyyMMddHHmmssfff") + "_";//文件前缀 var httpFile = Request.Files["fileUpload"]; bool flag = !(httpFile.ContentType != "application/vnd.ms-excel"); if (httpFile.ContentType != "application/octet-stream")
{
flag = false;
}
if (flag)
{
return "{\"error\":\"文件格式不正确!请先下载模板再导入数据!\",\"msg\":\"gzz\"}";
}
if (httpFile != null)
{
var fileName = httpFile.FileName; const string fileUrl = "../../../UploadFile/temp/"; var uploadPath = Server.MapPath(fileUrl) + preStr + fileName;//上传路径 if (!Directory.Exists(Server.MapPath(fileUrl))) //文件夹不存在
{
Directory.CreateDirectory(Server.MapPath(fileUrl));
} httpFile.SaveAs(uploadPath);//文件上传 fileName = fileName.Split('.')[]; var table = ExcelHelper.ExcelRead("temp", "Sheet1", preStr + fileName, out uploadPath);
if (table == null)
{
return "{\"error\":\"模版格式不正确!\",\"msg\":\"gzz\"}";
}
if (table.Rows.Count == )
{
return "{\"error\":\"此模版数据为空!\",\"msg\":\"gzz\"}";
}
if (table.Columns.Count != )
{
return "{\"error\":\"模版格式不正确!\",\"msg\":\"gzz\"}";
}
DataTable dataTable = GetTableSchema();
long countTime = SqlBulkCopyInsert(table, dataTable);
YFY.Web.App_Code.JLCommonBind.InsertActionLog(Session["master_name"].ToString(), "老师信息导入", "导入数据!合计" + (table.Rows.Count - count) + "条!");
if (!string.IsNullOrEmpty(schoolName))
{
return "{\"error\":\"\",\"msg\":\"" + schoolName.TrimEnd(',') + "不存在!成功导入" + (table.Rows.Count - count) + "条数据!\"}";
} if (!string.IsNullOrEmpty(xueyuanName))
{
return "{\"error\":\"\",\"msg\":\"" + xueyuanName.TrimEnd(',') + "不存在!成功导入" + (table.Rows.Count - count) + "条数据!\"}";
} return "{\"error\":\"\",\"msg\":\"成功导入" + (table.Rows.Count - count) + "条数据!\"}";
} return "{\"error\":\"\",\"msg\":\"数据导入失败!\"}";
}
/// <summary>
/// 使用SqlBulkCopy方式插入数据
/// </summary>
/// <param name="dt">源数据</param>
/// <param name="dataTable">目标table</param>
/// <returns></returns>
private long SqlBulkCopyInsert(DataTable dt, DataTable dataTable)
{
Commens.Commens comm = new YFY.Commens.Commens(); string schoolId,xueyuanId,classId,zhuanyeId = "";
foreach (DataRow item in dt.Rows)
{
DataRow dataRow = dataTable.NewRow(); dataRow["StudentName"] = item["学生姓名"].ToString().Trim(); schoolId = WDCBS_Common.GetSchoolId(item["学校名称"].ToString().Trim(), );
xueyuanId = WDCBS_Common.GetSchoolId(item["院系"].ToString().Trim(), );
classId = WDCBS_Common.GetSchoolId(item["班级"].ToString().Trim(), );
zhuanyeId = WDCBS_Common.GetZhuanYeId(item["专业"].ToString().Trim()); if (schoolId != "")//根据学校名称判断学校是否存在
{
dataRow["SchoolID"] = schoolId;
}
else
{
schoolName += item["学校名称"].ToString().Trim() + ",";
count++;
continue; } if (xueyuanId != "")//根据学院名称判断学院是否存在
{
dataRow["XueYuanID"] = xueyuanId;
}
else
{
schoolName += item["院系"].ToString().Trim() + ",";
count++;
continue; } if (zhuanyeId != "")//根据学院名称判断学院是否存在
{
dataRow["ZhuanYeID"] = zhuanyeId;
}
else
{
var bll = new BLLDao.JL_UnlimitCategory();
var model = new ModelDao.JL_UnlimitCategory();
model.CodeName = item["专业"].ToString().Trim();
model.CodePid = ;
model.CodeFlag = "";
int e_id = bll.Add(model);
dataRow["ZhuanYeID"] = e_id;
bll.MenuDropList("", "", "JL_UnlimitCategory", "CodeCode", "CodeId", e_id); } if (classId != "")//根据学院名称判断学院是否存在
{
dataRow["ClassID"] = classId;
}
else
{
var bll = new WDCBS_SchoolMessage();
var model = new Model.WDCBS_SchoolMessage();
model.TopId =schoolId;
model.UpId = xueyuanId;
model.Type = "";
model.ShowIf = "";
model.PingCeIf = "";
model.AddTime = DateTime.Now;
model.Name = item["班级"].ToString().Trim();
dataRow["ClassID"] = bll.Add(model);
} dataRow["Sex"] = item["性别"].ToString().Trim();
dataRow["Paymoney"] = item["支付额度"].ToString().Trim();
if (item["是否支付"].ToString().Trim()=="是")
{
dataRow["PayMoneyIf"] = "";
}
else
{
dataRow["PayMoneyIf"] = "";
}
if (WDCBS_Common.GetStudentIsExist(item["身份证号码"].ToString().Trim())) {
dataRow["IDCard"] = item["身份证号码"].ToString().Trim();
}
else
{
count++;
continue;
}
dataRow["Password"] = comm.MD5(""); //密码
dataRow["BiYeIf"] =;
dataRow["Role"] = ConfigurationManager.AppSettings["StudengRole"].ToString();
dataRow["LoginIf"] = ""; dataTable.Rows.Add(dataRow);
} Stopwatch stopwatch = new Stopwatch();
stopwatch.Start(); string connectionString = Maticsoft.DBUtility.PubConstant.ConnectionString;
SqlBulkCopy sqlBulkCopy = new SqlBulkCopy(connectionString);
sqlBulkCopy.DestinationTableName = "WDCBS_Student"; sqlBulkCopy.BatchSize = dataTable.Rows.Count;
SqlConnection sqlConnection = new SqlConnection(connectionString);
sqlConnection.Open();
if (dataTable != null && dataTable.Rows.Count != )
{
try
{
sqlBulkCopy.WriteToServer(dataTable);
}
catch (Exception ex)
{
YFY.Web.App_Code.JLCommonBind.InsertActionLog("", "学生信息导入", ex.ToString());
} }
sqlBulkCopy.Close();
sqlConnection.Close();
stopwatch.Stop(); return stopwatch.ElapsedMilliseconds; //return dataTable.Rows.Count;
} #region
private static DataTable GetTableSchema()
{
DataTable dataTable = new DataTable(); dataTable.Columns.AddRange(new DataColumn[] { new DataColumn("StudentID") });
dataTable.Columns.AddRange(new DataColumn[] { new DataColumn("StudentNo") });
dataTable.Columns.AddRange(new DataColumn[] { new DataColumn("StudentName") });
dataTable.Columns.AddRange(new DataColumn[] { new DataColumn("Sex") });
dataTable.Columns.AddRange(new DataColumn[] { new DataColumn("SchoolID") });
dataTable.Columns.AddRange(new DataColumn[] { new DataColumn("XueYuanID") });
dataTable.Columns.AddRange(new DataColumn[] { new DataColumn("ClassID") });
dataTable.Columns.AddRange(new DataColumn[] { new DataColumn("ZhuanYeID") });
dataTable.Columns.AddRange(new DataColumn[] { new DataColumn("StudentProvince") });
dataTable.Columns.AddRange(new DataColumn[] { new DataColumn("StudentCity") });
dataTable.Columns.AddRange(new DataColumn[] { new DataColumn("StudentAdress") });
dataTable.Columns.AddRange(new DataColumn[] { new DataColumn("FamilyPersonName") });
dataTable.Columns.AddRange(new DataColumn[] { new DataColumn("FamilyPersonRelation") });
dataTable.Columns.AddRange(new DataColumn[] { new DataColumn("FamilyPersonTelephone") });
dataTable.Columns.AddRange(new DataColumn[] { new DataColumn("BaoXianIf") });
dataTable.Columns.AddRange(new DataColumn[] { new DataColumn("Mail") });
dataTable.Columns.AddRange(new DataColumn[] { new DataColumn("IDCard") });
dataTable.Columns.AddRange(new DataColumn[] { new DataColumn("Telephone") });
dataTable.Columns.AddRange(new DataColumn[] { new DataColumn("QQ") });
dataTable.Columns.AddRange(new DataColumn[] { new DataColumn("Password") });
dataTable.Columns.AddRange(new DataColumn[] { new DataColumn("Studenttype") });
dataTable.Columns.AddRange(new DataColumn[] { new DataColumn("BanZhuRenTeacher") });
dataTable.Columns.AddRange(new DataColumn[] { new DataColumn("SchoolZhiDaoTeacher") });
dataTable.Columns.AddRange(new DataColumn[] { new DataColumn("EnterpriseZhiDaoTeacher") });
dataTable.Columns.AddRange(new DataColumn[] { new DataColumn("BiYeSheJiTeacher") });
dataTable.Columns.AddRange(new DataColumn[] { new DataColumn("JiuYeZhiDaoTeacher") });
dataTable.Columns.AddRange(new DataColumn[] { new DataColumn("XueJie") });
dataTable.Columns.AddRange(new DataColumn[] { new DataColumn("BiYeIf") });
dataTable.Columns.AddRange(new DataColumn[] { new DataColumn("BiYeTime") });
dataTable.Columns.AddRange(new DataColumn[] { new DataColumn("Statue") });
dataTable.Columns.AddRange(new DataColumn[] { new DataColumn("PingCeTeacherIf") });
dataTable.Columns.AddRange(new DataColumn[] { new DataColumn("PingCeEnterpriseIf") });
dataTable.Columns.AddRange(new DataColumn[] { new DataColumn("TeacherPingCeIf") });
dataTable.Columns.AddRange(new DataColumn[] { new DataColumn("EnterprisePingCeIf") });
dataTable.Columns.AddRange(new DataColumn[] { new DataColumn("JiaoWuPingCeIf") });
dataTable.Columns.AddRange(new DataColumn[] { new DataColumn("Attachment") });
dataTable.Columns.AddRange(new DataColumn[] { new DataColumn("Remark") });
dataTable.Columns.AddRange(new DataColumn[] { new DataColumn("Role") });
dataTable.Columns.AddRange(new DataColumn[] { new DataColumn("Paymoney") });
dataTable.Columns.AddRange(new DataColumn[] { new DataColumn("PayMoneyIf") });
dataTable.Columns.AddRange(new DataColumn[] { new DataColumn("HavePaymoney") });
dataTable.Columns.AddRange(new DataColumn[] { new DataColumn("RegistTag") });
dataTable.Columns.AddRange(new DataColumn[] { new DataColumn("RegistTagIf") });
dataTable.Columns.AddRange(new DataColumn[] { new DataColumn("LoginIf") });
dataTable.Columns.AddRange(new DataColumn[] { new DataColumn("DeleteIf") }); return dataTable;
}
#endregion
/// <summary>
Excel大批量导入数据到SQLServer数据库-万条只用1秒的更多相关文章
- C#实现从EXCEL文件读取数据到SqlServer数据库
用第三方组件:NPOI组件实现 先去官网:http://npoi.codeplex.com/下载需要引入dll(可以选择.net2.0或者.net4.0的dll),然后在网站中添加引用.使用 NPOI ...
- 使用SqlBulkCopy批量插入数据,测试20万条用时5秒
using System;using System.Collections.Generic;using System.Linq;using System.Text; using System.Data ...
- 解决将Excel表导入到SQL Server数据库时出现Text was truncated or one or more characters had no match in the target code错误
编写python爬虫程序可以在电商.旅游等网站上爬取相关评论数据,这些数据可以用于词云制作.感情词分析.提取关键词等,也可以将爬取下来的数据以自己的方式进行展示.评论数据爬取下来后,就要考虑怎样入库, ...
- 批量导入数据到mssql数据库的
概述 批量导入数据到数据库中,我们有好几种方式. 从一个数据表里生成数据脚本,到另一个数据库里执行脚本 从EXCEL里导入数据 上面两种方式,导入的数据都会生成大量的日志.如果批量导入5W条数据到数据 ...
- revit导出模型数据到sqlserver数据库
revit软件可以导出模型数据到sqlserver数据库,有时候,为了对模型做数据分析,需要导出模型的数据,下面总结一下导出过程: 首先在sqlserver中建立一个数据库,如:revit_wujin ...
- postman上传excel,java后台读取excel生成到指定位置进行备份,并且把excel中的数据添加到数据库
最近要做个前端网页上传excel,数据直接添加到数据库的功能..在此写个读取excel的demo. 首先新建springboot的web项目 导包,读取excel可以用poi也可以用jxl,这里本文用 ...
- PHP Excel文件导入数据到数据库
1.php部分(本例thinkphp5.1): 下载PHPExcel了扩展http://phpexcel.codeplex.com/ <?phpnamespace app\admin\contr ...
- excel导入数据到sqlserver
1.读取excel数据到dataset public static System.Data.DataSet ExcelSqlConnection(string filepath, string tab ...
- asp.net 从Excel表导入数据到数据库中
http://www.cnblogs.com/hfzsjz/archive/2010/12/31/1922901.html http://hi.baidu.com/ctguyg/item/ebc857 ...
随机推荐
- Google Map API V3开发(6) 代码
Google Map API V3开发(1) Google Map API V3开发(2) Google Map API V3开发(3) Google Map API V3开发(4) Google M ...
- 全文搜索 Lucene.Net
Lucene简介 首先说明的是--Lucene.Net只是一个全文检索开发包,不是一个成型的搜索引擎, 它的功能就是负责将文本数据按照某种分词算法进行切词,分词后的结果存储在索引库中,从索引库检索数据 ...
- Go - 项目收藏
谷歌官方维护了一个基于go语言的开源项目列表: https://github.com/golang/go/wiki/Projects Web框架 web.go.beego Go项目 httpmq:A ...
- shell--3.运算符
1.注意 原生bash不支持简单的数学运算,但是可以用其它命令来实现如 awk 和expr ,expr最常用 val=`expr 2 + 3` echo "结果 ${val}" # ...
- embed标签loop=true背景音乐无法循环
在html网页中加入背景音乐并设置为循环播放.一开始用<embed>标签,设置loop="true", 但是结果发现在IE浏览器可以,但是在chrome浏览器却无法实现 ...
- 清理系统 cmd
echo 正在清除系统垃圾文件,请稍等......del /f /s /q %systemdrive%*.tmpdel /f /s /q %systemdrive%*._mpdel /f /s /q ...
- SpringMVC@RequestBody小细节
关于@RequestBody 参数类型自己的包装类,还是类似String/int,区别: 1.@RequestBody LoginParmar parmar String user_number = ...
- WebService -- Java 实现之 CXF (WebService 服务器端接口)
1. 使用Maven创建一个quickstart项目 2. 引入依赖的Jar包 <dependency> <groupId>org.apache.cxf</groupId ...
- 开发基于Edge渲染内核的浏览器应用
在使用Edge之前,我们先来看看UWP(Universal Windows Platform)平台.微软研发了多种设备平板.手机.Xbox.个人电脑等,在此之前,如果需要给每台设备开发程序,都需要对应 ...
- Effective Python2 读书笔记1
Item 2: Follow the PEP 8 Style Guide Naming Naming functions, variables, attributes lowercase_unders ...