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# 批量处理数据录入的更多相关文章

  1. 基于MVC4+EasyUI的Web开发框架形成之旅--框架总体界面介绍

    在前面介绍了一些关于最新基于MVC4+EasyUI的Web开发框架文章,虽然Web开发框架的相关技术文章会随着技术的探讨一直写下去,不过这个系列的文章,到这里做一个总结,展示一下整体基于MVC4+Ea ...

  2. 也用 Log4Net 之将日志记录到数据库的后台实现 (二)

    也用 Log4Net 之将日志记录到数据库的后台实现 (二)  大家下午好,昨天讲了配置,今天我们讲讲后台实现,在完成了后台实现后,我们才能真正意义上的解决把自定义属性字段值录入到数据库中. 在开写之 ...

  3. 基于MVC4+EasyUI的Web开发框架形成之旅(5)--框架总体界面介绍

    在前面介绍了一些关于最新基于MVC4+EasyUI的Web开发框架文章,虽然Web开发框架的相关技术文章会随着技术的探讨一直写下去,不过这个系列的文章,到这里做一个总结,展示一下整体基于MVC4+Ea ...

  4. (转)基于MVC4+EasyUI的Web开发框架形成之旅--框架总体界面介绍

    http://www.cnblogs.com/wuhuacong/p/3344096.html 在前面介绍了一些关于最新基于MVC4+EasyUI的Web开发框架文章,虽然Web开发框架的相关技术文章 ...

  5. Log4Net 之将日志记录到数据库的后台实现 (二)

    原文:Log4Net 之将日志记录到数据库的后台实现 (二) 大家下午好,昨天讲了配置,今天我们讲讲后台实现,在完成了后台实现后,我们才能真正意义上的解决把自定义属性字段值录入到数据库中. 在开写之前 ...

  6. 从excel表中生成批量SQL,将数据录入到数据库中

    excel表格中有许多数据,需要将数据导入数据库中,又不能一个一个手工录入,可以生成SQL,来批量操作.     1.首先在第二行的H列,插入函数:=CONCATENATE("INSERT ...

  7. 使用事务操作SQLite数据批量插入,提高数据批量写入速度,源码讲解

    SQLite数据库作为一般单机版软件的数据库,是非常优秀的,我目前单机版的软件产品线基本上全部替换Access作为优选的数据库了,在开发过程中,有时候需要批量写入数据的情况,发现传统的插入数据模式非常 ...

  8. BDC、CATT批量数据维护

    声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...

  9. MES系统在小批量电子行业生产管理中的应用

    小批量电子产品生产管理的主要问题 电子电器制造类企业,既有单件小批量生产,也有批量生产:有按库存生产,也有按订单生产,属于典型的离散制造行业.因产品的不同其生产工艺流程也不尽相同,生产设备的布置不是按 ...

随机推荐

  1. iOS universallinks唤醒app

    从iOS9之后,苹果就推出了这个功能,用来唤醒外部app.这个功能在那些电商app上使用尤其广泛,当你打开对应的h5网页后,上面跳出一个是否跳转app的按钮. 现在iOS11已经基本覆盖,iOS12也 ...

  2. 内网最小化安装CentOS后,想安装ISO文件中的包怎么办呢?

    昨日公司测试人员需要升级公司服务器Python,发现公司服务器上缺失了各种各样的包.比如open-ssl,python-deve等 1.查看你的Centos版本 lsb_release -a 2.上传 ...

  3. C++ 内存、new与malloc分配内存区别?

    一关于内存 1.内存分配方式 内存分配方式有三种: (1)从静态存储区域分配.内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在.例如全局变量,static变量. (2)在栈上创建. ...

  4. js如何生成id随机数

    有时候在我们在新增数据时,需要自动生成主键id等,就经常会遇到需要生成随机数的方法. 下面先介绍一种比较简单的生成随机数方法: //产生随机数函数 function RndNum(n){ var rn ...

  5. php 计算两个文件的相对路径

    <?php /** * 计算两个文件的相对路径 */ function relative_path($path1, $path2) { $arr1 = explode('/', dirname( ...

  6. MAVLink功能开发,移植教程。

    MAVLink功能开发 -----------------本文由"智御电子"提供,同时提供视频移植教程,以便电子爱好者交流学习.---------------- 1.MAVLink ...

  7. python基础的一些知识点

    ord 将字符转换为ASCIIchr 将ASCII转换为字符 元组不可修改,当只有一个元素时,要添加一个逗号集合不可修改,元素无序,不能重复 列表.元组.字典都是可迭代对象,就是可以遍历的对象多层循环 ...

  8. 北京Uber优步司机奖励政策(3月29日

    滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...

  9. miniz库简介及使用

    miniz:Google开源库,它是单一的C源文件,紧缩/膨胀压缩库,使用zlib兼容API,ZIP归档读写,PNG写方式.关于miniz的更详细介绍可以参考:https://code.google. ...

  10. AtCoder:C - Nuske vs Phantom Thnook

    C - Nuske vs Phantom Thnook https://agc015.contest.atcoder.jp/tasks/agc015_c 题意: n*m的网格,每个格子可能是蓝色, 可 ...