前言

Microsoft SQL Server包含一个名为bcp的命令行实用工具,可以将较大文件快速大容量复制到SQL Server数据库的表或视图中,这种方法被称为Bulk Copy(批量复制)。

Bulk Copy相比与循环插入有很大的性能优势,网上有很多测试文章,这里就不再赘述了。

在C#代码中可以使用SqlBulkCopy类实现类似功能,但是只支持SQL Server。

MySql下也有MySqlConnector类库提供MySqlBulkCopy类实现类似功能,但是居然和官方MySql.Data类库不兼容:

Oracle下也有官方的OracleBulkCopy类实现类似功能,但是好像只有.NET版本。

那有不有一种方式,可以同时支持多数据库类型的Bulk Copy呢?

linq2db.EntityFrameworkCore

linq2db是最快的LINQ数据库访问库,在POCO对象和数据库之间提供简单,轻便,快速且类型安全的层。

linq2db提供了EF Core扩展包linq2db.EntityFrameworkCore,可以与EF Core集成并实现了一些很酷的功能,其中一项就是BulkCopy:

使用起来也很简单,示例代码如下:

DefaultDbContext context = new DefaultDbContext();//需要插入的数据
var users = new List<User>();
for (int i = 0; i < 1000; i++)
{users.Add(new User {  Name = "User" + i });
}using (var db = context.CreateLinqToDbConnection())
{//执行BulkCopyawait db.BulkCopyAsync(new BulkCopyOptions { TableName = "User" }, users);
}

结论

从上面的代码可以看出,BulkCopy方法不区分数据库,实际数据库类型由运行时DbContext决定。

如果你觉得这篇文章对你有所启发,请关注我的个人公众号”My IO“,记住我!

SqlBulkCopy只支持SQL Server? EF Core实现支持多数据库类型的Bulk Copy相关推荐

  1. Linux + .net core 开发升讯威在线客服系统:同时支持 SQL Server 和 MySQL 的实现方法

    前段时间我发表了一系列文章,开始介绍基于 .net core 的在线客服系统开发过程. 有很多朋友一直提出希望能够支持 MySQL 数据库,考虑到已经有朋友在用 SQL Server,我在升级的过程中 ...

  2. 微软 SQL Server 2019 将免费支持 Java;Rancher Labs获2500万美元融资;腾讯云进军日本市场……...

    关注并标星星CSDN云计算 极客头条:速递.最新.绝对有料.这里有企业新动.这里有业界要闻,打起十二分精神,紧跟fashion你可以的! 每周三次,打卡即read 更快.更全了解泛云圈精彩news g ...

  3. Linux 运行升讯威在线客服系统:同时支持 SQL Server 和 MySQL 的实现方法

    前段时间我发表了一系列文章,开始介绍基于 .net core 的在线客服系统开发过程. 有很多朋友一直提出希望能够支持 MySQL 数据库,考虑到已经有朋友在用 SQL Server,我在升级的过程中 ...

  4. 《Hadoop实战手册》一1.6 配置Sqoop以支持SQL Server

    本节书摘来异步社区<Hadoop实战手册>一书中的第1章,第1.6节,作者: [美]Jonathan R. Owens , Jon Lentz , Brian Femiano 译者: 傅杰 ...

  5. SQL Server 2016 JSON原生支持实例说明

    原文:SQL Server 2016 JSON原生支持实例说明 背景 Microsoft SQL Server 对于数据平台的开发者来说越来越友好.比如已经原生支持XML很多年了,在这个趋势下,如今也 ...

  6. 下一代SQL 产品发布会,诚邀您的参加!!包含 Azure数据服务、高级分析和SQL Server(其中包括支持Linux的SQL Server vNext)。

    现在注册 创新和业务转型 不论您是推动业务的决策者,还是下一个突破性应用程序的开发者,数据都是业务的核心 正如微软高层所言,加入我们,实现本地部署到云端的转型,利用微软数据平台最大程度优化您的数据策略 ...

  7. 如何连接sql托管实例_如何使用Windows托管的文件共享来支持SQL Server容器

    如何连接sql托管实例 In a previous article, Automate Delivery of SQL Server Production Data Environments Usin ...

  8. 解决SQL Server管理器无法连接远程数据库Error: 1326错误

    解决SQL Server管理器无法连接远程数据库Error: 1326错误 我们在在使用SQL Server时都会遇到使用SQL Server Management Studio无法连接远程数据库实例 ...

  9. SQL Server代理(4/12):配置数据库邮件

    SQL Server代理是所有实时数据库的核心.代理有很多不明显的用法,因此系统的知识,对于开发人员还是DBA都是有用的.这系列文章会通俗介绍它的很多用法. 在以前的文章里我们看到,SQL Serve ...

最新文章

  1. 深入浅出python机器学习_如何用python画三维图? add_subplot() Axes3D() plot_surface() gca()
  2. 在页面中隐藏数据库某信息并显示该信息对应的字典编码名称(后台ssh框架,前台extjs)
  3. centos纯命令行配置java环境
  4. 【机器学习基础】前置知识(四):一文掌握Pandas用法
  5. web服务器之iis,apache,tomcat三者之间的比较
  6. mysql 空闲几分钟速度变慢,MYSQL 运作一小段时间后,速度变得奇慢。而CPU基本空闲状态...
  7. linux内核更新 2.6.38,Linux内核 2.6.38版本预计到四月初完成
  8. 界面设计方法(2)— 5.功能按钮设计(新增,查询)
  9. 怎么调节手机的刷新率_【W21 5G性能篇】120Hz自适应刷新率,用了再也回不去
  10. STM32笔记记录2
  11. Matlab入门1(有手就行)
  12. 基于java社区疫情防控管理系统(java毕业设计)
  13. 使用nssm管理tomcat服务操作步骤
  14. 基于混沌系统的文本加密算法研究(一)——混沌及混沌加密的基础知识
  15. JavaScript高程三----(基础一)
  16. 计算机学报杂志官网在线出版,计算机学报
  17. mac os ERROR! The server quit without updating PID file
  18. 计算机读不了硬盘分区,一分钟告诉你硬盘要不要分区,为什么
  19. 「团队管理」UCD领域如何带领前端开发团队
  20. c#: NetTopologySuite凹凸多边形计算

热门文章

  1. 使用string.Format需要注意的一个性能问题
  2. python并行for循环_Python并行执行for循环
  3. 【转】学会这13个原则写UI界面文案,用户才能秒懂
  4. Comparison of video container formats
  5. centos打架django + mysql环境
  6. 交换网络中的sniffer讨论-基于交换网络的ARP spoofing sniffer
  7. CLS/CLR、c#(等语言)、托管、元数据、程序集 CLR学习第二课
  8. 小小一招解决“INSERT EXEC 语句不能嵌套”的问题
  9. ios 轻扫手势_轻扫即可快速删除iOS计算器中的数字
  10. 高清、免版权美图资源大全