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 ...
随机推荐
- Java递归算法——三角数字(消除递归)
import java.io.*; // for I/O //类名:Params //属性: //方法: class Params //这个类的对象被压入栈中 { public int n; //用来 ...
- c++11 中成员变量初始化的顺序
参考C++11FAQ https://www.chenlq.net/cpp11-faq-chs 11以后可以直接在类里面初始化成员变量,类似这样 class A { int a=1; const in ...
- nginx虚拟主机配置笔记
1.添加配置文件 /etc/nginx/sites-available/ 下新建文件 phpmyadmin 文件内容 server { listen 80; listen [::]:80; serve ...
- Private-code MaxCounter
No need for a double cycle: : You are given N counters, initially set to 0, and you have two possibl ...
- 商品库存“存取设计”,MySQL事务、表锁、行锁
MySQL 使用 SELECT ... FOR UPDATE 做事务写入前的确认 以MySQL 的InnoDB 为例,预设的 Tansaction isolation level 为 REPEATA ...
- 【Alpha版本】冲刺阶段——Day 1
我说的都队 031402304 陈燊 031402342 许玲玲 031402337 胡心颖 03140241 王婷婷 031402203 陈齐民 031402209 黄伟炜 031402233 郑扬 ...
- 【Alpha】Daily Scrum Meeting第一次
一.本次Daily Scrum Meeting主要内容 代码任务细分 服务器搭建 每个人时间分配及安排 二.项目进展 学号尾数 今天做的任务 任务完成度 明天要做的任务 612 写代码框架 30% 主 ...
- C和指针 第八章 习题
8.5矩阵运算,A是一个x行,y列矩阵,B是y行z列矩阵,把A和B相乘,结果是另外一个x行z列矩阵,每个位置的值由下公式决定,编写函数: #include <stdio.h> void m ...
- php之登录功能实现。
项目默认存在的东西:jquery库[jquery.min.js] 登录功能实现的基本逻辑: 1.书写前台php功能基本页面:(index.php) a.编写基本功能,比如用户名.密码.登录 b.引用j ...
- 【Python基础学习五】列表,元祖,字典
1.列表(list) 列表是Python的一种内置数据类型,list是一种有序的集合,可以随时添加和删除其中的元素,就像动态数组一样.获取list中的元素用角标获取,角标可以使用正角标,也可以使用负角 ...