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系统在小批量电子行业生产管理中的应用
小批量电子产品生产管理的主要问题 电子电器制造类企业,既有单件小批量生产,也有批量生产:有按库存生产,也有按订单生产,属于典型的离散制造行业.因产品的不同其生产工艺流程也不尽相同,生产设备的布置不是按 ...
随机推荐
- 【oracle】关于创建表时用default指定默认值的坑
刚开始学create table的时候没注意,学到后面发现可以指定默认值.于是写了如下语句: 当我查询的时候发现,查出来的结果是这样的.. 很纳闷有没有,我明明指定默认值了呀,为什么创建出来的表还是空 ...
- DB数据源之SpringBoot+MyBatis踏坑过程(五)手动使用Hikari连接池
DB数据源之SpringBoot+MyBatis踏坑过程(五)手动使用Hikari连接池 liuyuhang原创,未经允许禁止转载 系列目录连接 DB数据源之SpringBoot+Mybatis踏坑 ...
- 个人开发者即时到账收款方案 BufPay.com
BufPay 个人即时到账支付平台 前言 作为独立开发者,一般只有一个人独立奋战,做出了产品需要收款是非常麻烦的,接入支付宝微信支付都需要公司公户,而注册公司.开公户等一系列操作非常麻烦,成本也很高一 ...
- 【HDOJ 1285】确定比赛名次(拓扑排序+优先队列)
Problem Description有N个比赛队(1<=N<=500),编号依次为1,2,3,....,N进行比赛,比赛结束后,裁判委员会要将所有参赛队伍从前往后依次排名,但现在裁判委员 ...
- linux 学习第九天
一.磁盘 (FHS:Filesystem Hierarchy Standard(文件系统层次化标准)的缩写) 1.常用目录 /var 主要存放经常变化的文件,如日志 /usr/local 用户自行 ...
- SpringBoot整合Swagger2以及生产环境的安全问题处理
1.创建springboot项目 https://www.cnblogs.com/i-tao/p/8878562.html 这里我们使用多环境配置: application-dev.yml(开发环境) ...
- Vue learning experience
一.内置指令[v-ref] Official-document-expression: 父组件在子组件上注册的索引,便于直接访问.不需要表达式,必须提供参数ID,可以通过父组件的$ref对象访问子组件 ...
- lamp 安装 apache
lamp安装 httpd-2.2.4.tar.gz :http://download.csdn.net/detail/wulvla020311/8046141 先检查一下装的东西都在不在:rpm -q ...
- React的安装方法
一:直接使用 BootCDN 的 React CDN 库,地址如下: <script src="https://cdn.bootcss.com/react/16.4.0/umd/rea ...
- Docker学习——gitlab部署
Gitlab 下载镜像 docker pull hub.c.163.com/gutenye/gitlab-ce:latest 查看镜像 docker images 启动容器 宿主机和docker的端口 ...