sql 批量插入数据到Sqlserver中 效率较高的方法
使用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中 效率较高的方法相关推荐
- python加数据库_用python批量插入数据到数据库中
既然使用python操作数据库必不可少的得使用pymysql模块 可使用两种方式进行下载安装: 1.使用pip方式下载安装 pip install pymysql 2.IDE方式 安装完成后就可以正常 ...
- sql批量插入数据mysql_MYSQL批量插入数据库实现语句性能分析
假定我们的表结构如下: CREATE TABLE example ( example_id INT NOT NULL, name VARCHAR( 50 ) NOT NULL, value VARCH ...
- Java通过Mybatis实现批量插入数据到Oracle中
最近项目中遇到一个问题:导入数据到后台并将数据插入到数据库中,导入的数据量有上万条数据,考虑采用批量插入数据的方式: 结合网上资料,写了个小demo,文章末尾附上demo下载地址 1.新建项目:项目目 ...
- 动态sql批量插入数据
核心逻辑即为mysql批量插入数据 1 动态sql批量插入单表 mapper层 集合入参 入参字段符合动态sql字段 void updateBatchRefresh(List<WccsInfoP ...
- 用python批量插入数据到数据库中
既然使用python操作数据库必不可少的得使用pymysql模块 可使用两种方式进行下载安装: 1.使用pip方式下载安装 pip install pymysql 2.IDE方式 安装完成后就可以正常 ...
- mybatis批量插入数据到Oracle中的两种方式
文章目录 1. 第1种 2. 第2种 1. 第1种 <insert id="addList" parameterType="java.util.List" ...
- 批量插入数据库语句java_java相关:MyBatis批量插入数据到Oracle数据库中的两种方式(实例代码)...
java相关:MyBatis批量插入数据到Oracle数据库中的两种方式(实例代码) 发布于 2020-7-22| 复制链接 本文通过实例代码给大家分享了MyBatis批量插入数据到Oracle数据库 ...
- sql批量插入防止重复插入_使用SQL批量插入锁定配置
sql批量插入防止重复插入 One challenge we may face when using SQL bulk insert is whether we want to allow acces ...
- sql批量插入防止重复插入_使用具有严格业务规则SQL批量插入
sql批量插入防止重复插入 This article will cover SQL bulk insert operations deterministic outcomes and response ...
最新文章
- php写邮件空格_PHP 邮件漏洞小结
- Schmid Telecom选择StoreAge SVM实现数据镜像保护
- Windows Win7建立wifi热点,手机共享WIFI上网
- (一)获取上下文绘图环境
- 也来对比一下segmentfault、开源中国、简书
- U3D AND UDK 各自特点
- hyper-v虚拟机驱动_如何在Hyper-V虚拟机中访问本地和USB硬盘驱动器
- IPK轻量级密钥技术在电力卫星物联网中的接入与非证书签名认证
- 办公室电脑里的文件和家里电脑的文件同步,有什么便签软件可以实现
- docker容器获取宿主ip地址
- coreseek分词
- 个人逾期,失信黑名单
- 公众号运营必备三大神器,满足你的所有需求
- TI 927 928 947 948 940串行器解串器系列
- 什么是尾递归,尾递归的优势以及语言支持情况说明
- python django考勤签到系统
- 清华毕业生都去哪儿了
- win10摄像头在哪打开?【系统天地】
- 走出舒适区的两种方法
- Legend并列调整
热门文章
- opencv的一些滤镜效果
- java servlet 执行 多次_servlet 验证生命周期过程调用方法的次数
- 本文为 2021 年 5 月知识总结
- cannot instantiate the type
- linux curl 特殊字符,遇到问题--curl--- url参数中有+、空格、=、%、、#等特殊符号的导致传参不全 | 易学教程...
- 网页打开共享目录_“馆员说事儿”之三大中文数据库期刊封面、目录、封底下载方法步骤(三)中国知网...
- 【Flink】Flink key 应该分配到哪个 KeyGroup 以及 KeyGroup 分配在哪个subtask
- 【Flink】FLink checkpont 界面显示的含义
- 【ES】ES 拼音 Pinyin 分词器
- 【Java】java JMX之ObjectName