数据库一次性插入10w条数据,怎么插入效率快

时间:2021-11-23 03:03:42
    1. 在SQL Server 中插入一条数据使用Insert语句,但是如果想要批量插入一堆数据的话,循环使用Insert不仅效率低,而且会导致SQL一系统性能问题

    2. 下面介绍SQL Server支持的两种批量数据插入方法:Bulk和表值参数(Table-Valued Parameters)。

    3. bulk方法主要思想是通过在客户端把数据都缓存在Table中,然后利用SqlBulkCopy一次性把Table中的数据插入到数据库

    4. 代码如下:

    5. public static void BulkToDB(DataTable dt) 

      SqlConnection sqlConn = new SqlConnection( 
      ConfigurationManager.ConnectionStrings["ConnStr"].ConnectionString); 
      SqlBulkCopy bulkCopy = new SqlBulkCopy(sqlConn); 
      bulkCopy.DestinationTableName = "BulkTestTable"; 
      bulkCopy.BatchSize = dt.Rows.Count; 
      try 

      sqlConn.Open(); 
          if (dt != null && dt.Rows.Count != 0) 
          bulkCopy.WriteToServer(dt); 

      catch (Exception ex) 

      throw ex; 

      finally 

      sqlConn.Close(); 
      if (bulkCopy != null) 
      bulkCopy.Close(); 


      public static DataTable GetTableSchema() 

      DataTable dt = new DataTable(); 
      dt.Columns.AddRange(new DataColumn[]{ 
      new DataColumn("Id",typeof(int)), 
      new DataColumn("UserName",typeof(string)), 
          new DataColumn("Pwd",typeof(string))});

      return dt; 

      static void Main(string[] args) 

      Stopwatch sw = new Stopwatch(); 
      for (int multiply = 0; multiply < 10; multiply++) 

      DataTable dt = Bulk.GetTableSchema(); 
      for (int count = multiply * 100000; count < (multiply + 1) * 100000; count++) 

      DataRow r = dt.NewRow(); 
      r[0] = count; 
      r[1] = string.Format("User-{0}", count * multiply); 
      r[2] = string.Format("Pwd-{0}", count * multiply); 
      dt.Rows.Add(r); 

      sw.Start(); 
      Bulk.BulkToDB(dt); 
      sw.Stop(); 
      Console.WriteLine(string.Format("Elapsed Time is {0} Milliseconds", sw.ElapsedMilliseconds)); 

      Console.ReadLine(); 
      }

    6. 转载自:http://www.aspnetjia.com/Cont-133.html

数据库一次性插入10w条数据,怎么插入效率快的更多相关文章

  1. 你向 Mysql 数据库插入 100w 条数据用了多久?

    阅读本文大概需要 2 分钟. ▌目录 多线程插入(单表) 多线程插入(多表) 预处理 SQL 多值插入 SQL 事务( N 条提交一次) ▌多线程插入(单表) 问:为何对同一个表的插入多线程会比单线程 ...

  2. 使用JDBC向数据库中插入一条数据

    原谅我是初学者,这个方法写的很烂,以后不会改进,谢谢 /** * 通过JDBC向数据库中插入一条数据 1.Statement 用于执行SQL语句的对象 1.1 通过Connection 的 * cre ...

  3. 向Oracle数据库插入一条数据

    这几天搞了一下Oracle数据库.可能用sql server习惯了,感觉好不方便.PL的界面友好度比sql server差远了 .既然都收购了PL了 为什么不给它做好一点呢?各种不便.郁闷 向Orac ...

  4. java向数据库插入N条数据

    为了测试mysql的索引,要向数据库先插入上万条数据,然后再测试.手动插入太麻烦,写了一段代码. 先上代码: package action; import java.sql.Connection; i ...

  5. oracle 向数据库同时插入多条数据

    oracle 与 mysql 不同. mysql 可以直接插入多条数据的操作:  采用 INSERT INTO 某表 VALUES(各个值),VALUES(各个值),.....; 或者 INSERT ...

  6. Hibernate实现向数据库插入一条数据全过程(Study By Example)

    1.数据库(直接在cmd下进入数据库操作亦可) (1)启动Navicat for MySQL (2)打开连接,创建一个数据库,名为testdb (3)新建表user1,表结构如图所示 2.数据库池 ( ...

  7. Oracle-创建新表,创建备份表,对表中插入多条数据

    一.创建新表 0.基本语法 create table 表名称(id varchar2(50) primary key ,name char(200) not null,phone number(11) ...

  8. 解决hibernate只能插入一条数据的问题

    hibernate初学,根据视频教程写好代码后,发现无论执行多少次main函数,数据库中只有一条数据,尝试多次,后来终于发现问题... 使用的工具是:MYSQL 5.7.13   eclipse 4. ...

  9. PHP MySQL 插入多条数据

    PHP MySQL 插入多条数据 使用 MySQLi 和 PDO 向 MySQL 插入多条数据 mysqli_multi_query() 函数可用来执行多条SQL语句. 以下实例向 "MyG ...

随机推荐

  1. Linux学习一:安装&sol;配置vi,熟悉gcc&sol;vi

    1.安装的ubuntu14,进入桌面,ctrl+alt+t进入终端. 获得root权限: $sudo passwd root 输入密码 (注意:输入的和windows下不一样不会显示的,尽管输入就行. ...

  2. SDWebImage缓存图片的机制&lpar;转&rpar;

    SDWebImage是一个很厉害的图片缓存的框架.既ASIHttp+AsyncImage之后,我一直使用AFNetworking集成的UIImageView+AFNetworking.h,但后者对于图 ...

  3. oracle查看表占磁盘大小

    select segment_name, bytes/1024/1024 from user_segments S where S.segment_type = 'TABLE' AND S.segme ...

  4. 责任链模式(Chain of Responsibility Pattern)

    责任链模式:可以为某个请求创建一个对象链.每个对象依序检查此请求,并对其处理,或者把它传给链中的下一个对象. 责任链上的对象负责处理请求,客户只需要将请求发送到责任链上即可,无需关心处理的细节和请求的 ...

  5. 使用Jquery&period;load&lpar;&rpar;方法&comma;出现-此页的状态信息无效,可能已损坏。&lbrack;转&rsqb;

    今天遇到此页的状态信息无效,可能已损坏,在以下页面找到解决办法,特记录下来: 转自:http://www.cnblogs.com/liuwenlong/archive/2011/05/09/20410 ...

  6. MicroStrategy笔试

    1. coding判定二叉树是否是有序二叉树 2. 一个有序数组A(buffer足够大),和一个有序数组B,设计算法,merge两个数组后有序,不使用任何额外的内存空间 3. 100个点灯问题,初始状 ...

  7. Spring Boot1&period;5&period;4 AOP实例

    原文:https://github.com/x113773/testall/issues/12 1. 还是首先添加依赖(使用当前springboot的默认版本)```<dependency&gt ...

  8. ES6与canvas实现鼠标小球跟随效果

    最近闲来无聊,看了下ES6的语法,结合canvas实现了动画特效--随着鼠标的移动,会有小球跟随且自动消失的动画. 首先,html部分,目前就一个canvas标签. <canvas id=&qu ...

  9. &lbrack;LeetCode&rsqb; Daily Temperatures 日常温度

    Given a list of daily temperatures, produce a list that, for each day in the input, tells you how ma ...

  10. 16&colon; mint-ui移动端

    1.1 mint-ui安装与介绍  官网:http://mint-ui.github.io/docs/#/zh-cn2/loadmore 1.安装与引用 // 安装Vue 2.0 npm instal ...