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系统在小批量电子行业生产管理中的应用
小批量电子产品生产管理的主要问题 电子电器制造类企业,既有单件小批量生产,也有批量生产:有按库存生产,也有按订单生产,属于典型的离散制造行业.因产品的不同其生产工艺流程也不尽相同,生产设备的布置不是按 ...
随机推荐
- Oracle12C创建用户遇到ora-6509
引用自:http://blog.itpub.net/29357786/viewspace-1995055/ ORACLE 12C创建用户之ORA-65096 2016年2月25日,一北京北方人瑞教育咨 ...
- java基础知识(初学)
(小记) 文本文档方式可以下载notepad 在设置-新建-修改默认语言为java 编码为ANSI! java关键字特点:1.完全小写字母.如:public. java标识符:方法的名称,类的名称,变 ...
- 【usaco】1.1
你的飞碟在这儿Your Ride Is Here(难度:入门难度) 题目链接 题目大意 emmmm 输入两个字符串,问他们每个字母的asco码相乘后字符串是否相等. 思路 一道水题?(雾) 错误代码: ...
- PHP在foreach中对$value赋值
foreach ($data as $key => $value) { $data[$key]['name'] = '测试在value中赋值';}
- day 28 黏包及黏包解决方案
1.缓冲区 每个socket被创建以后,都会分配两个缓冲区,输入缓冲区和输出缓冲区,默认大小都是8k,可以通过getsocket()获取,暂时存放传输数据,防止程序在发送的时候卡阻,提高代码运行效率. ...
- git小技巧之分支、关联远程仓库、回滚、解决.gitignore不生效等
1.分支管理 新建并切换分支:git checkout -b <name>新建本地分支并关联到远程分支git checkout -b myRelease origin/Release合并某 ...
- 微信小程序登录以及注册用户信息得到token
先来一张登录时序图 总的大概就是 通过调用wx.login得到code 请求small_session获得sessionid 微信wx.getUserInfo获得encryptedData和iv 通过 ...
- C语言与汇编语言相互调用原理以及实例
C语言与汇编语言相互调用原理以及实例 1.原理 其实不管是C语言还是汇编语言想要执行都是最终编译链接成为二进制文件. 这里一定要明确编译和链接是两个步骤,生成的文件格式也是不一样的. 编译生成的文件是 ...
- 北京Uber优步司机奖励政策(2月16日)
滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...
- day 4 __all__ 包 __init__.py
1.__all__的作用 如果一个文件中有__all__变量,那么也就意味着这个变量中的元素,不会被from xxx import *时导入 __all__ = ["test1", ...