今天想着如何大批量插入数据到数据库中  最开始的想法是使用insert循环插入 但每次都要创建数据库连接 这是非常消耗时间和消耗资源的事。后在网上看到了说使用SqlBulkCopy ,就看了看文档和别人的列子 感觉理解到了一点大概的使用方法  就打算记录下来 方便自己以后使用

  1. <code class="language-csharp">using System;
  2. using System.Collections.Generic;
  3. using System.Data;
  4. using System.Data.SqlClient;
  5. using System.Linq;
  6. using System.Text;
  7. using System.Threading.Tasks;
  8. namespace 测试
  9. {
  10. class Program
  11. {
  12. static void Main(string[] args)
  13. {
  14. //创建一个DataTable对象
  15. DataTable dt = new DataTable();
  16. dt.Columns.Add("name",typeof(string));
  17. //给dt内存表插入数据
  18. for (int i = 0; i < 1000000; i++)
  19. {
  20. dt.Rows.Add("测试" + i);
  21. }
  22. System.Diagnostics.Stopwatch st = new System.Diagnostics.Stopwatch();
  23. st.Start();
  24. using (SqlConnection conn = new SqlConnection("server=.;uid=sa;pwd=1316123;database=Temp"))
  25. {
  26. conn.Open();
  27. using (SqlBulkCopy bulkCopy = new SqlBulkCopy(conn))
  28. {
  29. try
  30. {
  31. //插入到数据库的目标表 TbA:表名
  32. bulkCopy.DestinationTableName = "[dbo].[temptable]";
  33. //内存表的字段 对应数据库表的字段
  34. bulkCopy.ColumnMappings.Add("name", "TempData");
  35. bulkCopy.WriteToServer(dt);
  36. }
  37. catch (Exception ex)
  38. {
  39. Console.WriteLine(ex);
  40. }
  41. }
  42. }
  43. st.Stop();
  44. Console.WriteLine("成功!测试时间为:"+st.ElapsedMilliseconds);
  45. Console.ReadKey();
  46. }
  47. }
  48. }
  49. </code>

c# 向数据库插数据超过1000条的更多相关文章

  1. oracle select in超过1000条报错解决方法

    本博客介绍oracle select in超过1000条数据的解决方法,java框架是采用mybatis的,这可以说是一种比较常见的错误:select * from A where id in(... ...

  2. 用Entity Framework往数据库插数据时,出现异常,怎么查看异常的详细信息呢?

    做项目时,在用Entity Framework往数据库插数据时,程序报异常,但是通过报的异常死活没法查看异常的详细信息.这让人很是烦恼.本着自己动手丰衣足食的原则,通过查看资料终于找到了显示异常详细信 ...

  3. 保留mysql数据库中的最新1000条记录

    <?php mysql_connect("localhost","root","root");mysql_select_db(&quo ...

  4. 14、通过jpa往数据库插数据

    这是接着上一篇写的,在上一篇的基础上添加 Controller @RestController public class HelloController { @Resource private Hel ...

  5. Hibernate 连接数据库,数据库返回数据超过限制报错

    1.packet for query is too large 1024 >. you can change this value on the server mysql max_allowed ...

  6. AD查询1000条限制和解决方案

      公司的一个项目要从AD上取数据,为了测试性能,批量在AD上创建了2000多个用户.但是用java程序获取所有用户的时候会报错或者只能取到1000条数据.   条数据. 用org.springfra ...

  7. 关于Highcharts数据量超过1000时无法显示问题

    今天在vue的项目中引入Highcharts,想做一个大数据量的实时刷新曲线图,发现当数据量超过1000就无法显示. 经过排查发现 Highcharts为了保证更好的性能设置了一个性能阈值检查,当数据 ...

  8. laravel如何从mysql数据库中随机抽取n条数据

    laravel如何从mysql数据库中随机抽取n条数据 一.总结 一句话总结: inRandomOrder():$userQuestions=UserQuestion::where($map)-> ...

  9. java 将数据库中的每一条数据取出放入数组或者List中

    1.如何将数据库中数据按照行(即一整条数据)取出来,存入到数组当中? public static String str = null; // 将StringBuffer转化成字符串 public st ...

随机推荐

  1. Go语言公开或未公开的标识符

    Go语言公开或未公开的标识符的基本概念 Go语言支持从包里公开或者隐藏标志符,通过这个特性,可以让用户按照自己的规则控制标识符的可见性. Go语言中的可见性,是通过声明类型的大小写来进行区别的. 例如 ...

  2. jatoolsprinter web打印控件直接打印不弹出

    1.功能 主要是实现页面点击按钮,不弹窗,直接打印. 可以指定某个打印机打印 可以使用默认打印机打印 2.版本 主要有:免费版跟付费版 免费版官网:http://printfree.jatools.c ...

  3. 利用 UDF 轻松迁移

    位运算.布尔运算和逐位运算的乐趣 如果您正从支持位运算.布尔运算以及一些函数的数据库迁移到 IBM® DB2® Universal Database™(UDB),那么您也许会对如何在 DB2 中处理这 ...

  4. C-static,auto,register,volatile

    static 一:静态,意思就是呆在一个地方,不想动,大概就是编译期间就确定地址了.首先了解下C中的进程内存布局: 1)正文段(.text)——CPU执行的机器指令部分:一个程序只有一个副本:只读,防 ...

  5. [THUWC2017]随机二分图

    题目大意 给一张二分图,有左部点和右部点. 有三种边,第一种是直接从左部点连向右部点,出现概率为50%. 第二种边一组里有两条边,这两条边同时出现或者不出现,概率都是50%. 第三种边一组里有两条边, ...

  6. hdu 3480 Division(四边形不等式优化)

    Problem Description Little D is really interested in the theorem of sets recently. There’s a problem ...

  7. x86汇编语言实践(1)

    0 写在前面 为了更深入的了解程序的实现原理,近期我学习了IBM-PC相关原理,并手工编写了一些x86汇编程序. 在2017年的计算机组成原理中,曾对MIPS体系结构及其汇编语言有过一定的了解,考虑到 ...

  8. Maven pom文件标签解析大全

    <span style="padding:0px; margin:0px"><project xmlns="http://maven.apache.or ...

  9. 第三节:总结.Net下后端的几种请求方式(WebClient、WebRequest、HttpClient)

    一. 前言 前端调用有Form表单提交,ajax提交,ajax一般是用Jquery的简化写法,在这里不再过多介绍: 后端调用大约有这些:WebCient.WebRequest.Httpclient.W ...

  10. [Luogu P4180][BJWC 2010]严格次小生成树

    严格次小生成树,关键是“严格”,如果是不严格的其实只需要枚举每条不在最小生成树的边,如果得到边权和大于等于最小生成树的结束就行.原理就是因为Kruskal非常贪心,只要随便改一条边就能得到一个非严格的 ...