c# 批量处理数据录入
c# 分批处理数据录入 //using System.Text; //using System.Data; //using System.Data.SqlClient; //using System; //namespace InsertEfficiency //{ // class Program // { // static void Main(string[] args) // { // //构造数据源 // DataTable dt = new DataTable(); // dt.Columns.Add(new DataColumn("ID", typeof(int))); // dt.Columns.Add(new DataColumn("CreateDateTime", typeof(DateTime))); // dt.Columns.Add(new DataColumn("TestMethod", typeof(string))); // for (int i = 1; i <= 30; i++) // { // dt.Rows.Add(new object[] { i, DateTime.Now, "ExecuteSqlBulkCopy" }); // } // Test t = new Test(); // DateTime begin1 = DateTime.Now; // t.ExecuteRowByRow(dt); // DateTime end1 = DateTime.Now; // Console.WriteLine("ExecuteRowByRow:{0}ms", (end1 - begin1).Milliseconds); // DateTime begin2 = DateTime.Now; // t.ExecuteOnce(dt); // DateTime end2 = DateTime.Now; // Console.WriteLine("ExecuteOnce:{0}ms", (end2 - begin2).Milliseconds); // DateTime begin3 = DateTime.Now; // t.ExecuteSqlBulkCopy(dt); // DateTime end3 = DateTime.Now; // Console.WriteLine("ExecuteSqlBulkCopy:{0}ms", (end3 - begin3).Milliseconds); // Console.ReadLine(); // } // } // class Test // { // public Test() // { // } // public void ExecuteRowByRow(DataTable dt) // { // using (SqlConnection conn = new SqlConnection(GetConnectionString)) // { // conn.Open(); // for (int rowIndex = 0; rowIndex < dt.Rows.Count; rowIndex++) // { // DataRow dr = dt.Rows[rowIndex]; // SqlCommand cmd = new SqlCommand(); // cmd.Connection = conn; // cmd.CommandText = string.Format("insert into TestTable values ({0},'{1}','{2}')", // dr[0].ToString(), dr[1].ToString(), "ExecuteRowByRow"); // cmd.ExecuteNonQuery(); // } // } // } // public void ExecuteOnce(DataTable dt) // { // StringBuilder strSql = new StringBuilder(); // for (int rowIndex = 0; rowIndex < dt.Rows.Count; rowIndex++) // { // DataRow dr = dt.Rows[rowIndex]; // string sql = string.Format("insert into TestTable values ({0},'{1}','{2}')", // dr[0].ToString(), dr[1].ToString(), "ExecuteOnce"); // if (strSql.ToString().Length == 0) // { // strSql.Append(sql); // } // else // { // strSql.Append(";").Append(sql); // } // } // using (SqlConnection conn = new SqlConnection(GetConnectionString)) // { // conn.Open(); // SqlCommand cmd = new SqlCommand(); // cmd.Connection = conn; // cmd.CommandText = strSql.ToString(); // cmd.ExecuteNonQuery(); // } // } // public void ExecuteSqlBulkCopy(DataTable dt) // { // using (SqlConnection conn = new SqlConnection(GetConnectionString)) // { // SqlBulkCopy bulk = new SqlBulkCopy(conn); // bulk.DestinationTableName = "TestTable"; // bulk.BatchSize = dt.Rows.Count; // if (dt != null && dt.Rows.Count != 0) // { // conn.Open(); // bulk.WriteToServer(dt); // } // bulk.Close(); // } // } // string GetConnectionString // { // get // { // //return @"server=.\mssqlserver2005;database=test;uid=sa;pwd=123456"; // return @"server=SA-PC\SQLEXPRESS;database=test;uid=sa;pwd=123"; // } // } // } //} using System.Text; using System.Data; using System.Data.SqlClient; using System.Threading; using System; namespace InsertEfficiency { class Program { static void Main(string[] args) { Test t = new Test(); t.Testing(); Console.ReadLine(); } } class Test { DataTable dt = new DataTable(); public Test() { CreateData(); } private void CreateData() { //构造数据源 dt.Columns.Add(new DataColumn("ID", typeof(int))); dt.Columns.Add(new DataColumn("CreateDateTime", typeof(DateTime))); dt.Columns.Add(new DataColumn("TestMethod", typeof(string))); for (int i = ; i <= ; i++) { dt.Rows.Add(new object[] { i, DateTime.Now, "ExecuteSqlBulkCopy" }); } } public void Testing() { for (int i = ; i < ; i++) { Thread t = new Thread(new ParameterizedThreadStart(ExcuteTesting)); t.Start(i); } } private void ExcuteTesting(object TreadNo) { //DateTime begin1 = DateTime.Now; //ExecuteRowByRow(); //DateTime end1 = DateTime.Now; //Console.WriteLine("Tread-{0}-ExecuteRowByRow:{1}ms", TreadNo, (end1 - begin1).Milliseconds); DateTime begin2 = DateTime.Now; ExecuteOnce(); DateTime end2 = DateTime.Now; Console.WriteLine("Tread-{0}-ExecuteOnce:{1}ms", TreadNo, (end2 - begin2).Milliseconds); //DateTime begin3 = DateTime.Now; //ExecuteSqlBulkCopy(); //DateTime end3 = DateTime.Now; //Console.WriteLine("Tread-{0}-ExecuteSqlBulkCopy:{1}ms", TreadNo, (end3 - begin3).Milliseconds); //Console.WriteLine("Tread-{0} execute successfully\r\n", TreadNo); } private void ExecuteRowByRow() { using (SqlConnection conn = new SqlConnection(GetConnectionString)) { SqlCommand cmd = new SqlCommand(); cmd.Connection = conn; DataRow dr; conn.Open(); SqlTransaction tran = conn.BeginTransaction(); try { for (int rowIndex = ; rowIndex < dt.Rows.Count; rowIndex++) { dr = dt.Rows[rowIndex]; cmd.CommandText = string.Format("insert into TestTable values ({0},'{1}','{2}')", dr[].ToString(), dr[].ToString(), "ExecuteRowByRow"); cmd.ExecuteNonQuery(); } tran.Commit(); } catch { tran.Rollback(); } } } private void ExecuteOnce() { StringBuilder strSql = new StringBuilder(); for (int rowIndex = ; rowIndex < dt.Rows.Count; rowIndex++) { DataRow dr = dt.Rows[rowIndex]; string sql = string.Format("insert into TestTable values ({0},'{1}','{2}')", dr[].ToString(), dr[].ToString(), "ExecuteOnce"); if (strSql.ToString().Length == ) { strSql.Append(sql); } else { strSql.Append(";").Append(sql); } } using (SqlConnection conn = new SqlConnection(GetConnectionString)) { SqlCommand cmd = new SqlCommand(); cmd.Connection = conn; cmd.CommandText = strSql.ToString(); conn.Open(); cmd.ExecuteNonQuery(); } } public void ExecuteSqlBulkCopy() { using (SqlConnection conn = new SqlConnection(GetConnectionString)) { SqlBulkCopy bulk = new SqlBulkCopy(conn); bulk.DestinationTableName = "TestTable"; bulk.BatchSize = dt.Rows.Count; if (dt != null && dt.Rows.Count != ) { conn.Open(); bulk.WriteToServer(dt); } bulk.Close(); } } private string GetConnectionString { get { return @"server=SA-PC\SQLEXPRESS;database=test;uid=sa;pwd=123"; } } } }
c# 批量处理数据录入的更多相关文章
- 基于MVC4+EasyUI的Web开发框架形成之旅--框架总体界面介绍
在前面介绍了一些关于最新基于MVC4+EasyUI的Web开发框架文章,虽然Web开发框架的相关技术文章会随着技术的探讨一直写下去,不过这个系列的文章,到这里做一个总结,展示一下整体基于MVC4+Ea ...
- 也用 Log4Net 之将日志记录到数据库的后台实现 (二)
也用 Log4Net 之将日志记录到数据库的后台实现 (二) 大家下午好,昨天讲了配置,今天我们讲讲后台实现,在完成了后台实现后,我们才能真正意义上的解决把自定义属性字段值录入到数据库中. 在开写之 ...
- 基于MVC4+EasyUI的Web开发框架形成之旅(5)--框架总体界面介绍
在前面介绍了一些关于最新基于MVC4+EasyUI的Web开发框架文章,虽然Web开发框架的相关技术文章会随着技术的探讨一直写下去,不过这个系列的文章,到这里做一个总结,展示一下整体基于MVC4+Ea ...
- (转)基于MVC4+EasyUI的Web开发框架形成之旅--框架总体界面介绍
http://www.cnblogs.com/wuhuacong/p/3344096.html 在前面介绍了一些关于最新基于MVC4+EasyUI的Web开发框架文章,虽然Web开发框架的相关技术文章 ...
- Log4Net 之将日志记录到数据库的后台实现 (二)
原文:Log4Net 之将日志记录到数据库的后台实现 (二) 大家下午好,昨天讲了配置,今天我们讲讲后台实现,在完成了后台实现后,我们才能真正意义上的解决把自定义属性字段值录入到数据库中. 在开写之前 ...
- 从excel表中生成批量SQL,将数据录入到数据库中
excel表格中有许多数据,需要将数据导入数据库中,又不能一个一个手工录入,可以生成SQL,来批量操作. 1.首先在第二行的H列,插入函数:=CONCATENATE("INSERT ...
- 使用事务操作SQLite数据批量插入,提高数据批量写入速度,源码讲解
SQLite数据库作为一般单机版软件的数据库,是非常优秀的,我目前单机版的软件产品线基本上全部替换Access作为优选的数据库了,在开发过程中,有时候需要批量写入数据的情况,发现传统的插入数据模式非常 ...
- BDC、CATT批量数据维护
声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...
- MES系统在小批量电子行业生产管理中的应用
小批量电子产品生产管理的主要问题 电子电器制造类企业,既有单件小批量生产,也有批量生产:有按库存生产,也有按订单生产,属于典型的离散制造行业.因产品的不同其生产工艺流程也不尽相同,生产设备的布置不是按 ...
随机推荐
- jQuery 属性操作 - addClass() 和 removeClass() 方法
实例 向第一个 p 元素添加一个类: $("button").click(function(){ $("p:first").addClass("int ...
- [开源]JSON文本格式化工具(简码万能助手开源扩展程序)
现在的网站大多都是使用json进行API式前后端数据交互, 有时抓包得到的是一串没格式化的JSON文本, 不太方便分析, 所以我自行写了个开源扩展程序, 可以方便地格式化JSON文本. 当然,你也 ...
- 20181029noip模拟赛T1
1.借书 [问题描述] Dilhao一共有n本教科书,每本教科书都有一个难度值,他每次出题的时候都会从其中挑两本教科书作为借鉴,如果这两本书的难度相差越大,Dilhao出的题就会越复杂,也就是说,一道 ...
- FreeImage 生成带透明通道的GIF
主要方法: 加载图像及读取参数 FreeImage_Load FreeImage_GetWidth FreeImage_GetHeight FreeImage_Allocate FreeImage_G ...
- git 的一些基本命令小结
Git是目前世界上最先进的分布式版本控制系统 对于git 的用法,本文并不属于教程,只是总结记录一些平时用的简单命令 git的下载地址:https://git-scm.com/downloads 主要 ...
- ubuntu系统的软件包管理工具
ubuntu系统的软件包管理工具有两种,一种是离线管理,另一种是在线管理 1.离线管理 dpkg工具可以对本地存放的deb安装包进行安装,卸载,查看状态等. dpkg -i app_name_vers ...
- Java三种代理模式
本文转自:https://mp.weixin.qq.com/s/nBmbNP2mR7ei-lDsuOxjWg 代理模式 代理(Proxy)是一种设计模式,提供了对目标对象另外的访问方式;即通过代理对象 ...
- python学习笔记:第13天 内置函数(一)
详细文件查看点击这里:详细地址
- python 解积分方程
引用:https://www.aliyun.com/jiaocheng/527786.html sympy求解极限.积分.微分.二元一次方程:http://www.gzhshoulu.wang/art ...
- ecshop跨站漏洞详情及修补网站漏洞
ecshop目前最新版本为4.0,是国内开源的一套商城系统,很多外贸公司,以及电商平台都在使用,正因为使用的人数较多,很多攻击者都在挖掘该网站的漏洞,就在最近ecshop被爆出高危漏洞,该漏洞利用跨站 ...