基于ASP.NET几十万数据几秒钟就可以导入到数据库中
/// <summary>
/// 一、构建模拟数据存放于DataTable
/// </summary>
/// <returns>DataTable</returns>
public DataTable GetData()
{
DataTable dt = new DataTable(); dt.Columns.Add("MemberID", typeof(int));//为新的Datatable添加一个新的列名
dt.Columns.Add("Body", typeof(string));//为新的Datatable添加一个新的列名
dt.Columns.Add("IsSecret", typeof(int));//为新的Datatable添加一个新的列名
dt.Columns.Add("AdminReply", typeof(string));//为新的Datatable添加一个新的列名
dt.Columns.Add("AdminReplyTime", typeof(DateTime));
dt.Columns.Add("CreateTime", typeof(DateTime)); for (int i = ; i < ; i++) //开始循环赋值
{
DataRow row = dt.NewRow(); //创建一个行
row["MemberID"] = ; //从总的Datatable中读取行数据赋值给新的Datatable
row["Body"] = "留言了:" + (i + ).ToString();
row["IsSecret"] = ;
row["AdminReply"] = "回复了:" + (i + ).ToString();
row["AdminReplyTime"] = DateTime.Now;
row["CreateTime"] = DateTime.Now.AddMonths(-);
dt.Rows.Add(row);//添加次行
}
return dt;
}
/// <summary>
/// 二、实例的数据源中的列与该实例的目标表中的列之间的映射
/// </summary>
/// <returns></returns>
public SqlBulkCopyColumnMapping[] GetMapping()
{
SqlBulkCopyColumnMapping[] mapping = new SqlBulkCopyColumnMapping[];
mapping[] = new SqlBulkCopyColumnMapping("MemberID", "MemberID");
mapping[] = new SqlBulkCopyColumnMapping("Body", "Body");
mapping[] = new SqlBulkCopyColumnMapping("IsSecret", "IsSecret");
mapping[] = new SqlBulkCopyColumnMapping("AdminReply", "AdminReply");
mapping[] = new SqlBulkCopyColumnMapping("AdminReplyTime", "AdminReplyTime");
mapping[] = new SqlBulkCopyColumnMapping("CreateTime", "CreateTime");
return mapping;
} /// <summary>
/// DataTable批量添加(有事务)
/// </summary>
/// <param name="Table">数据源DataTable</param>
/// <param name="DestinationTableName">目标表即需要插入数据的数据表名称如"Message"</param>
public bool MySqlBulkCopy(DataTable Table, string DestinationTableName)
{
bool Bool = true;
using (SqlConnection con = new SqlConnection(DbHelperSQL.connectionString))
{
con.Open();
using (SqlTransaction Tran = con.BeginTransaction())//应用事物
{
using (SqlBulkCopy Copy = new SqlBulkCopy(con, SqlBulkCopyOptions.KeepIdentity, Tran))
{
Copy.DestinationTableName = DestinationTableName;//指定目标表
SqlBulkCopyColumnMapping[] Mapping = GetMapping();//获取映射关系
if (Mapping != null)
{
//如果有数据
foreach (SqlBulkCopyColumnMapping Map in Mapping)
{
Copy.ColumnMappings.Add(Map);
}
}
try
{
Copy.WriteToServer(Table);//批量添加
Tran.Commit();//提交事务
}
catch
{
Tran.Rollback();//回滚事务
Bool = false;
}
}
}
}
return Bool;
} public ActionResult InsertMoreData()
{
MySqlBulkCopy(GetData(), "Message");
return RedirectToAction("Index");
}
基于ASP.NET几十万数据几秒钟就可以导入到数据库中的更多相关文章
- Bulk Insert:将文本数据(csv和txt)导入到数据库中
将文本数据导入到数据库中的方法有很多,将文本格式(csv和txt)导入到SQL Server中,bulk insert是最简单的实现方法 1,bulk insert命令,经过简化如下 BULK INS ...
- c# SqlBulkCopy实现批量从数据集中把数据导入到数据库中
今天遇到了一个导入类第一次见 SqlBulkCopy 可以实现从一个数据集导入到数据库中的表中 本来想从数据集中一条条遍历insert到库中 有了这个后发现: 只在把表与数据集的列做一下对应关系,再走 ...
- 微软BI 之SSIS 系列 - 在 SSIS 中导入 ACCESS 数据库中的数据
开篇介绍 来自 天善学院 一个学员的问题,如何在 SSIS 中导入 ACCESS 数据表中的数据. 在 SSIS 中导入 ACCESS 数据库数据 ACCESS 实际上是一个轻量级的桌面数据库,直接使 ...
- excel数据通过构建sql语句导入到数据库中
拿到一张excel数据表格,数据格式如下图所示: 2.根据excel数据结果,构建保存excel数据的表结构 CREATE TABLE #tmpExcel(IP VARCHAR(100),IPAddr ...
- Java版将EXCEL表数据导入到数据库中
1.采用第三方控件JXL实现 try { //实例化一个工作簿对象 Workbook workBook=Workbook.getWorkbook(new File("F://qzlx.xls ...
- 利用DataSet更改数据,将更改保存到数据库中
RowState 是 DataRow 很重要的一个属性, 表示 DataRow 当前的状态. RowState 有 Added, Modified, Unchanged, Deleted, Detac ...
- sqlserver怎么将excel表的数据导入到数据库中
在数据库初始阶段,我们有些数据在EXCEL中做好之后,需要将EXCEL对应列名(导入后对应数据库表的字段名),对应sheet(改名为导入数据库之后的表名)导入指定数据库, 相当于导入一张表的整个数据. ...
- java实现EXCEL数据导入到数据库中的格式问题的解决
之前作为项目甲方,加之java接触不多,在java web开发方面都是打下手的份. 对于EXCEL数据导入到数据库这个问题一直老是出现格式原因而导入失败也是未免惆怅,开发团队也是只说回去检查一下格式. ...
- 解析excel文件并将数据导入到数据库中
今天领导给安排了一个临时工作,让我将一个excel里面的数据解析后放入数据库中,经过一个下午的努力成功完成,现在将代码献上,希望对大家有所帮助 一.需要导入的jar 1.commons-collect ...
随机推荐
- 4_bootstrap之栅格系统
4.栅格系统 4.1.简述栅格系统 为了方便在布局容器中进行网页的布局操作. BootStrap提供了一套专门用于响应式开发布局的栅格系统. 栅格系统将一行分为12列,通过设定元素占用的列数来 布局元 ...
- CSS 第1练 搜索
1.搜索 效果: <!DOCTYPE HTML> <html> <head> <meta charset="gbk" /> < ...
- javascript中defer的作用
javascript中defer的作用 <script src="../CGI-bin/delscript.js" defer></script>中的def ...
- 光圈、曝光、ISO
光圈大小对景深的影响: 光圈大小示意图(值越小光圈越大) 光圈.曝光.ISO对图像效果影响
- less gradient-vertical 方法的实现
// Vertical gradient using CSS where possible, and base64-encoded SVG for IE9 (enables use of this i ...
- hive 建表导入数据
1. hive> create table wyp > (id int, name string, > age int, tel string) > ROW FORMAT DE ...
- centos 使用windows7 存储
1. 在Windows7上创建一个带密码的用户,如disk 2. 创建一个文件夹,如 D:\centos-disk2 3. 选中此文件夹,点击上方的 共享 -> 特定用户, 添加disk用户, ...
- python's try&except&else
[python's try&except&else] python的try&catch有个好用的东西,else,即try&except&else可以共用,els ...
- Air File.load加载问题
不要用File.load同时加载多个文件,有时会引起程序崩溃. 在需要同时加载多个文件时,要一个一个排队加载,等到上一个加载完成再加载下一个. 也可以设定一个static的File,加载前先File. ...
- 判断viewpager左右滑动方向
实现思路就是通过viewpager的滑动监听,用参数position进行比较,同时当判断完这个要把比较的positon覆盖.这里简单介绍一下public void onPageScrolled(int ...