在C#中,我们可以使用sqlBulkCopy去批量插入数据,其他批量插入方法不在讨论。

 1         /// <summary>
2 /// SqlBulkCopy批量插入数据
3 /// </summary>
4 /// <param name="connectionStr">链接字符串</param>
5 /// <param name="dataTableName">表名</param>
6 /// <param name="sourceDataTable">数据源</param>
7 /// <param name="batchSize">一次事务插入的行数</param>
8 public static void SqlBulkCopyByDataTable(string connectionStr, string dataTableName, DataTable sourceDataTable, int batchSize = 100000)
9 {
10 using (SqlConnection connection=new SqlConnection(connectionStr))
11 {
12 using (SqlBulkCopy sqlBulkCopy=new SqlBulkCopy(connectionStr,SqlBulkCopyOptions.UseInternalTransaction))
13 {
14 try
15 {
16 sqlBulkCopy.DestinationTableName = dataTableName;
17 sqlBulkCopy.BatchSize = batchSize;
18 for (int i = 0; i < sourceDataTable.Columns.Count; i++)
19 {
20 sqlBulkCopy.ColumnMappings.Add(sourceDataTable.Columns[i].ColumnName,sourceDataTable.Columns[i].ColumnName);
21 }
22 sqlBulkCopy.WriteToServer(sourceDataTable);
23 }
24 catch (Exception ex)
25 {
26
27 throw ex;
28 }
29 }
30 }
31 }

使用方式如下,这里我将插入100万条数据,

  在SqlBulkCopyByDataTable方法中每次插入10万条,

  其插入方式SqlBulkCopyOptions.UseInternalTransaction (即事务插入,可用其他方式。)

 1             DataTable dt = new DataTable("测试");
2 dt.Columns.Add("ID",typeof(int));
3 dt.Columns.Add("Name", typeof(string));
4 dt.Columns.Add("Age", typeof(int));
5 for (int i = 1; i <= 1000000; i++)
6 {
7 DataRow row = dt.NewRow();
8 row["ID"] = i;
9 row["Name"] = "名字"+i;
10 row["Age"] = i;
11 dt.Rows.Add(row);
12 }
13
14 string connStr = System.Configuration.ConfigurationManager.ConnectionStrings["connStr"].ConnectionString;
15
16 Stopwatch stopWatch = new Stopwatch();
17 stopWatch.Start();
18
19
20 SqlBulkCopyByDataTable(connStr, "T_Demo", dt);
21
22 Console.WriteLine(stopWatch.Elapsed);
23 Console.ReadKey();

耗时为如下。

C#中的SqlBulkCopy批量插入数据的更多相关文章

  1. sql 中的Bulk和C# 中的SqlBulkCopy批量插入数据 ( 回顾 and 粗谈 )

    通常,我们会对于一个文本文件数据导入到数据库中,不多说,上代码. 首先,表结构如下.   其次,在我当前D盘中有个文本文件名为2.txt的文件. 在数据库中,可以这样通过一句代码插入. Bulk in ...

  2. SqlBulkCopy批量插入数据时,不执行触发器和约束的解决方法

    原文:SqlBulkCopy批量插入数据时,不执行触发器和约束的解决方法 在new SqlBulkCopy对象的时候,设置一下SqlBulkCopyOptions选项即可,按位或运算 SqlBulkC ...

  3. 用SqlBulkCopy批量插入数据到SqlServer数据库表中

    首先创建一个数据库连接类:SQLHelper using System; using System.Collections.Generic; using System.Linq; using Syst ...

  4. 使用 SqlBulkCopy 批量插入数据

    /// <summary> /// 使用SqlBulkCopy将DataTable中的数据批量插入数据库中 /// </summary> /// <param name= ...

  5. MSSQL使用sqlbulkcopy批量插入数据

    具体代码如下: /// <summary> /// 批量插入数据到BayonetZipFailedPic表 /// </summary> /// <param name= ...

  6. sqlbulkcopy 批量插入数据

    批量插入 Datetable数据  通过sqlbulkcopy 插入1百万条数据 用时 10秒钟 (有兴趣的小伙伴可以去测试) /// <summary> /// /// </sum ...

  7. c# sqlbulkcopy批量插入数据

    dt信息中包含数据和表名 public static void SqlBulkInsert(DataTable dt, string connStr) { try { using (var conn ...

  8. 使用事务和SqlBulkCopy批量插入数据

    SqlBulkCopy是.NET Framework 2.0新增的类,位于命名空间System.Data.SqlClient下,主要提供把其他数据源的数据有效批量的加载到SQL Server表中的功能 ...

  9. C#使用SqlTransaction事务回滚与SqlBulkCopy批量插入数据

    C#中批量处理数据,有时候因为一条记录导致整个批量处理失败.这时候肯能会导致数据不全等问题,这时候我们可以使用SqlTransaction来进行事务回滚,即是要么全部成功要么全部不成功.如下代码 // ...

随机推荐

  1. unserialize3 攻防世界

    序列化是将对象转换为便于保存的字符串, 而反序列化是将便于保存的字符串转换为字符串. _wakeup()魔法方法 如果直接传参给code会被__wakeup()函数再次序列化,所以要绕过他, 利用__ ...

  2. 软件测试----xml文件介绍

    软件测试 目录 软件测试 一.什么是XML?: 二.XML和HTML的差异: 三.XML的特点 1.XML可以自定义标签 2.XML必须包含根元素 如上所示, 3.XML标签对大小写敏感 4.XML ...

  3. day51:django:dispatch&模板渲染&过滤器&标签&组件&静态文件配置

    目录 1.dispatch 2.模板渲染 3.过滤器 4.标签 5.组件 6.静态文件配置 dispatch 回顾:CBV对应的URL传参 urls.py url(r'^book/(\d+)/(\d+ ...

  4. HBase表的数据导出和导入

    1. 表数据导出 hbase org.apache.hadoop.hbase.mapreduce.Export test file:///home/hadoop/test (导入到本地) hbase ...

  5. Python爬虫练习:爬取800多所大学学校排名、星级等

    前言 国内大学最新排名,北大反超,浙大仅第四,中科大跌至第八 时隔五年,"双一流"大学即将迎来首次大考,这也是继改变高校评断标准之后,第一次即将以官方对外发布,自然是引来了许多人的 ...

  6. JVM学习(八)指令重排序

    一.数据依赖性 在学习JVM的指令重排序之前,我们先了解一下什么是数据依赖性: 编译器和处理器在处理具体的指令时,可能会对操作进行重排序来提高执行性能[多条指令并行执行,所以提升性能的同时也可能会导致 ...

  7. explain为mysql关键字,不能作为表字段创建

    在用jpa自动建表时,字段名命名为了explain,发现报实体类与数据库表字段不一致的错,查询才发现explain是mysql的关键字,无法作为表字段建立,特此记录

  8. 一文了解.Net Core 3.1 Web API基础知识

    一.前言 随着近几年前后端分离.微服务等模式的兴起,.Net Core也似有如火如荼之势 ,自16年发布第一个版本到19年底的3.1 LTS版本,以及将发布的.NET 5,.NET Core一路更迭, ...

  9. (转载)CPU基础知识

    本文转载自网络. 如有侵权,请联系处理!   简介 中央处理器(CPU,Central Processing Unit)是一块超大规模的集成电路,是一台计算机的运算核心(Core)和控制核心( Con ...

  10. Python-禅

    Python特点 1. 面向对象解释性编程语言 2. 简洁.优雅的编码风格 3. 跨平台 windows MacOS Linux 4. 丰富的标准库和第三方库 什么是编程? 解决现实中问题 什么是面向 ...