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系统在小批量电子行业生产管理中的应用
小批量电子产品生产管理的主要问题 电子电器制造类企业,既有单件小批量生产,也有批量生产:有按库存生产,也有按订单生产,属于典型的离散制造行业.因产品的不同其生产工艺流程也不尽相同,生产设备的布置不是按 ...
随机推荐
- trunc(sysdate)的含义是什么
1.ORACLE中TRUNC是截取的函数
- chromium之scoped_ptr
看看怎么使用 // Scopers help you manage ownership of a pointer, helping you easily manage the // a pointer ...
- Zabbix——部署(DB与web分离)
前提条件: 两台centos7设备 两台设备可以相互访问 Zabbix-Servser版本为4.0 mysql版本为8.0 关闭防火墙 Zabbix部署(包含server,web,agent) rpm ...
- eclipse官方下载地址
下载地址: https://www.eclipse.org/downloads/packages/release/Luna/SR2 选择不同版本
- Linux每日一命令:【00】总纲
Linux每日一命令更新频率为每周5篇. 文章结构如下: 简介 语法 选项 参数 常用实例 实用技巧(可选) 参考文档 文章目录如下: 2018-02-19 20:15 -- Linux每日一命令:[ ...
- dmesg功能介绍
dmesg 命令的使用范例 ‘dmesg’命令设备故障的诊断是非常重要的.在‘dmesg’命令的帮助下进行硬件的连接或断开连接操作时,我们可以看到硬件的检测或者断开连接的信息.‘dmesg’命令在多数 ...
- JSON字符串与JS对象格式转换
JSON通常用于服务器向客户端传送数据,传回来的JSON数据是字符串的形式,所以要转变为JS对象形式才方便我们使用. JSON字符串转变为JS对象:JSON.parse( ); JS对象转变为JSON ...
- MySQL---正确使用索引、limit分页、执行计划、慢日志查询
正确使用索引 数据库表中添加索引后确实会让查询速度起飞,但前提必须是正确的使用索引来查询,如果以错误的方式使用,则即使建立索引也会不奏效.即使建立索引,索引也不会生效: - like '%xx' se ...
- Linux字符设备驱动--No.1
平台:tiny210SOC:s5pv210内核:Linux 3.0.8字符驱动:按键中断驱动源码: /************************************************* ...
- keil5最新版安装与破解
1. 下载链接: https://pan.baidu.com/s/1BIrhqmxWdHY7hvihE0Wd4A 密码: cp45 2. 解压缩后得到: 3. 运行mdk526.exe安装keil5. ...