SQL批量插入数据【万级】
1、每4000条插入一次
for (int i = 0; i < dt.Rows.Count; i++)
{ IsTBProductForStockInfo model = new IsTBProductForStockInfo();
model.SyncSkuCode = dt.Rows[i]["SyncSkuCode"].ToString();
model.SkuId = dt.Rows[i]["SkuId"].ToString();
info.Add(model);
rowcount = rowcount + 1;
tabIndex = tabIndex + 1;
if (rowcount == pagesize)
{
if (listsize - tabIndex < 4000)
{
pagesize = listsize - tabIndex;
}
BatchAddNciicUserInfo(info)
} } public static string BatchAddNciicUserInfo(List<IsTBProductForStockInfo> listData)
{
int i = 0;
using (SqlConnection conn = new SqlConnection(ConnectionString))
{
if (conn.State != ConnectionState.Open)
{
conn.Open();
}
using (SqlTransaction tran = conn.BeginTransaction())
{
try
{
using (SqlBulkCopy sqlDB = new SqlBulkCopy(conn, SqlBulkCopyOptions.Default, tran))
{ DataTable dtSource = new DataTable();
dtSource.Columns.Add("SkuId", typeof(int));
dtSource.Columns.Add("SyncSkuCode", typeof(string));
dtSource.Columns.Add("Spec", typeof(string));
dtSource.Columns.Add("OldQtyonhand", typeof(int));
dtSource.Columns.Add("NewQtyonhand", typeof(int));
dtSource.Columns.Add("Status", typeof(string));
dtSource.Columns.Add("Times", typeof(DateTime));
dtSource.Columns.Add("usersecretkey", typeof(string));
foreach (var item in listData)
{
DataRow dr = dtSource.NewRow();
dr["SkuId"] = item.SkuId;
dr["SyncSkuCode"] = item.SyncSkuCode;
dr["Spec"] = item.Spec;
dr["OldQtyonhand"] = item.OldQtyonhand;
dr["NewQtyonhand"] = item.NewQtyonhand;
dr["Status"] = item.Status;
dr["Times"] = DateTime.Now;
dr["usersecretkey"] = item.usersecretkey;
dtSource.Rows.Add(dr);
i = i + 1;
}
sqlDB.BatchSize = 10000;
sqlDB.BulkCopyTimeout = 60;
sqlDB.DestinationTableName = string.Format("dbo.za_IsTBProductForStock");
sqlDB.ColumnMappings.Add("SkuId", "SkuId");
sqlDB.ColumnMappings.Add("SyncSkuCode", "SyncSkuCode");
sqlDB.ColumnMappings.Add("Spec", "Spec");
sqlDB.ColumnMappings.Add("OldQtyonhand", "OldQtyonhand");
sqlDB.ColumnMappings.Add("NewQtyonhand", "NewQtyonhand");
sqlDB.ColumnMappings.Add("Status", "Status");
sqlDB.ColumnMappings.Add("Times", "Times");
sqlDB.ColumnMappings.Add("usersecretkey", "usersecretkey");
sqlDB.WriteToServer(dtSource);
}
tran.Commit();
}
catch (Exception ex)
{
tran.Rollback();
throw ex;
}
} }
return "插入成功";
}
10000条数据用时25秒左右!!!!
SQL批量插入数据【万级】的更多相关文章
- SQL 批量插入数据
后面进行完善修改. /*批量插入数据*/ 这个比较完善.直接插入数据库表. INSERT INTO `goods_transverter` ( `code`,`es_id`,`barcode`, `n ...
- sql 批量插入数据到Sqlserver中 效率较高的方法
使用SqlBulk #region 方式二 static void InsertTwo() { Console.WriteLine("使用Bulk插入的实现方式"); Stopwa ...
- 使用SQL批量插入数据到数据库 以及一些SQL函数的语法
批量插入100条记录 set nocount on declare @i int=1; while @i<=100 begin Insert into Client(id,ClientCode, ...
- sql批量插入数据之存储过程
-- ============================================= -- Author: jf_ou -- Create date: 2016/03/22 -- Desc ...
- C# 批量插入表SQLSERVER SqlBulkCopy往数据库中批量插入数据
#region 帮助实例:SQL 批量插入数据 多种方法 /// <summary> /// SqlBulkCopy往数据库中批量插入数据 /// </summary> /// ...
- sql 中的Bulk和C# 中的SqlBulkCopy批量插入数据 ( 回顾 and 粗谈 )
通常,我们会对于一个文本文件数据导入到数据库中,不多说,上代码. 首先,表结构如下. 其次,在我当前D盘中有个文本文件名为2.txt的文件. 在数据库中,可以这样通过一句代码插入. Bulk in ...
- 【sqlserver】批量插入10万数据
DECLARE @LN VARCHAR(300),@MN VARCHAR(200),@FN VARCHAR(200)DECLARE @LN_N INT,@MN_N INT,@FN_N INTSET @ ...
- Oracle批量插入数据SQL语句太长出错:无效的主机/绑定变量名
Oracle数据库,用mybatic批量插入数据: <insert id="saveBatch" parameterType="io.renren.entity.N ...
- SQL 2005批量插入数据的二种方法
SQL 2005批量插入数据的二种方法 Posted on 2010-07-22 18:13 moss_tan_jun 阅读(2635) 评论(2) 编辑 收藏 在SQL Server 中插入一条数据 ...
随机推荐
- getline使用问题
1.输入string string s1; getline(cin,s1); cin>>s1; //注意cin遇到空格会终止,而getline不会 2.关于吞回车问题 输入n后要记得吞回车 ...
- SQL2008R2安装碰到问题的解决方法(iso文件用对应的工具)
SQL2008R2安装碰到问题的解决方法 安装谁不会啊,这么简单,是啊,可是匹配包时就不是那么顺利啊.就像以前的Ruby还专挑匹配版本的包一样,不像现在的Py自动为我们找,这是Mar 7贴在Q ...
- CDN百科第四讲 | 如何优雅地在云上“摆摊”——做直播带货,你不得不关注的技术
最近,国家政策开始鼓励“地摊经济”,一时间各家企业平台纷纷推出地摊扶持政策,地摊概念股顺势大涨,地摊生态及配套商品也开始走俏,甚至在网络上也涌现出各种“新摊主速成攻略”,万亿的烟火经济俨然已经走上风口 ...
- 机器学习中的标准化方法(Normalization Methods)
希望这篇随笔能够从一个实用化的角度对ML中的标准化方法进行一个描述.即便是了解了标准化方法的意义,最终的最终还是要:拿来主义,能够在实践中使用. 动机:标准化的意义是什么? 我们为什么要标准化?想象我 ...
- 使用matplotlib进行可视化
转自:https://blog.csdn.net/qq_30614345/article/details/99049790 https://blog.csdn.net/qq_30614345/arti ...
- EOS基础全家桶(十三)智能合约基础
简介 智能合约是现在区块链的一大特色,而不同的链使用的智能合约的虚拟机各不相同,编码语言也有很大差异.而今天我们开始学习EOS的智能合约,我也是从EOS初期一直开发合约至今,期间踩过无数坑,也在Sta ...
- Tensorflow 中(批量)读取数据的案列分析及TFRecord文件的打包与读取
内容概要: 单一数据读取方式: 第一种:slice_input_producer() # 返回值可以直接通过 Session.run([images, labels])查看,且第一个参数必须放在列表中 ...
- 几个超级实用但很少人知道的 VS 技巧
大家好,今天分享几个我知道的实用 VS 技巧,而这些技巧我发现很多人都不知道.因为我经常在工作中遇到:我在同事电脑上解决问题,或在会议上演示代码示例时,使用了一些 VS "骚"操作 ...
- Jmeter系列(30)- 详解 JDBC Request
如果你想从头学习Jmeter,可以看看这个系列的文章哦 https://www.cnblogs.com/poloyy/category/1746599.html 前言 JDBC Request 主要是 ...
- Jmeter系列(29)- 详解 JDBC Connection Configuration
如果你想从头学习Jmeter,可以看看这个系列的文章哦 https://www.cnblogs.com/poloyy/category/1746599.html 前言 发起 jdbc 请求前,需要有 ...