使用SqlBulk

#region 方式二
static void InsertTwo()
{
Console.WriteLine("使用Bulk插入的实现方式");
Stopwatch sw = new Stopwatch();
DataTable dt = GetTableSchema();

using (SqlConnection conn = new SqlConnection(StrConnMsg))
{
SqlBulkCopy bulkCopy = new SqlBulkCopy(conn);
bulkCopy.DestinationTableName = "Product";
bulkCopy.BatchSize = dt.Rows.Count;
conn.Open();
sw.Start();

for (int i = 0; i < totalRow;i++ )
{
DataRow dr = dt.NewRow();
dr[0] = Guid.NewGuid();
dr[1] = string.Format("商品", i);
dr[2] = (decimal)i;
dt.Rows.Add(dr);
}
if (dt != null && dt.Rows.Count != 0)
{
bulkCopy.WriteToServer(dt);
sw.Stop();
}
Console.WriteLine(string.Format("插入{0}条记录共花费{1}毫秒,{2}分钟", totalRow, sw.ElapsedMilliseconds, GetMinute(sw.ElapsedMilliseconds)));
}
}
static DataTable GetTableSchema()
{
DataTable dt = new DataTable();
dt.Columns.AddRange(new DataColumn[] {
new DataColumn("Id",typeof(Guid)),
new DataColumn("Name",typeof(string)),
new DataColumn("Price",typeof(decimal))});
return dt;
}
#endregion

插入100w条记录才8s多,是不是很溜。

使用TVPs(表值参数)插入数据

从sqlserver 2008起开始支持TVPs。创建缓存表ProductTemp ,执行如下SQL。

CREATE TYPE ProductTemp AS  TABLE(
Id UNIQUEIDENTIFIER PRIMARY KEY,
NAME VARCHAR(50) NOT NULL,
Price DECIMAL(18,2) NOT NULL
)

可见插入100w条记录共花费了11秒多。

转载于:https://www.cnblogs.com/yangpeng-jingjing/p/6155098.html

sql 批量插入数据到Sqlserver中 效率较高的方法相关推荐

  1. python加数据库_用python批量插入数据到数据库中

    既然使用python操作数据库必不可少的得使用pymysql模块 可使用两种方式进行下载安装: 1.使用pip方式下载安装 pip install pymysql 2.IDE方式 安装完成后就可以正常 ...

  2. sql批量插入数据mysql_MYSQL批量插入数据库实现语句性能分析

    假定我们的表结构如下: CREATE TABLE example ( example_id INT NOT NULL, name VARCHAR( 50 ) NOT NULL, value VARCH ...

  3. Java通过Mybatis实现批量插入数据到Oracle中

    最近项目中遇到一个问题:导入数据到后台并将数据插入到数据库中,导入的数据量有上万条数据,考虑采用批量插入数据的方式: 结合网上资料,写了个小demo,文章末尾附上demo下载地址 1.新建项目:项目目 ...

  4. 动态sql批量插入数据

    核心逻辑即为mysql批量插入数据 1 动态sql批量插入单表 mapper层 集合入参 入参字段符合动态sql字段 void updateBatchRefresh(List<WccsInfoP ...

  5. 用python批量插入数据到数据库中

    既然使用python操作数据库必不可少的得使用pymysql模块 可使用两种方式进行下载安装: 1.使用pip方式下载安装 pip install pymysql 2.IDE方式 安装完成后就可以正常 ...

  6. mybatis批量插入数据到Oracle中的两种方式

    文章目录 1. 第1种 2. 第2种 1. 第1种 <insert id="addList" parameterType="java.util.List" ...

  7. 批量插入数据库语句java_java相关:MyBatis批量插入数据到Oracle数据库中的两种方式(实例代码)...

    java相关:MyBatis批量插入数据到Oracle数据库中的两种方式(实例代码) 发布于 2020-7-22| 复制链接 本文通过实例代码给大家分享了MyBatis批量插入数据到Oracle数据库 ...

  8. sql批量插入防止重复插入_使用SQL批量插入锁定配置

    sql批量插入防止重复插入 One challenge we may face when using SQL bulk insert is whether we want to allow acces ...

  9. sql批量插入防止重复插入_使用具有严格业务规则SQL批量插入

    sql批量插入防止重复插入 This article will cover SQL bulk insert operations deterministic outcomes and response ...

最新文章

  1. php写邮件空格_PHP 邮件漏洞小结
  2. Schmid Telecom选择StoreAge SVM实现数据镜像保护
  3. Windows Win7建立wifi热点,手机共享WIFI上网
  4. (一)获取上下文绘图环境
  5. 也来对比一下segmentfault、开源中国、简书
  6. U3D AND UDK 各自特点
  7. hyper-v虚拟机驱动_如何在Hyper-V虚拟机中访问本地和USB硬盘驱动器
  8. IPK轻量级密钥技术在电力卫星物联网中的接入与非证书签名认证
  9. 办公室电脑里的文件和家里电脑的文件同步,有什么便签软件可以实现
  10. docker容器获取宿主ip地址
  11. coreseek分词
  12. 个人逾期,失信黑名单
  13. 公众号运营必备三大神器,满足你的所有需求
  14. TI 927 928 947 948 940串行器解串器系列
  15. 什么是尾递归,尾递归的优势以及语言支持情况说明
  16. python django考勤签到系统
  17. 清华毕业生都去哪儿了
  18. win10摄像头在哪打开?【系统天地】
  19. 走出舒适区的两种方法
  20. Legend并列调整

热门文章

  1. opencv的一些滤镜效果
  2. java servlet 执行 多次_servlet 验证生命周期过程调用方法的次数
  3. 本文为 2021 年 5 月知识总结
  4. cannot instantiate the type
  5. linux curl 特殊字符,遇到问题--curl--- url参数中有+、空格、=、%、、#等特殊符号的导致传参不全 | 易学教程...
  6. 网页打开共享目录_“馆员说事儿”之三大中文数据库期刊封面、目录、封底下载方法步骤(三)中国知网...
  7. 【Flink】Flink key 应该分配到哪个 KeyGroup 以及 KeyGroup 分配在哪个subtask
  8. 【Flink】FLink checkpont 界面显示的含义
  9. 【ES】ES 拼音 Pinyin 分词器
  10. 【Java】java JMX之ObjectName