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批量插入数据【万级】的更多相关文章

  1. SQL 批量插入数据

    后面进行完善修改. /*批量插入数据*/ 这个比较完善.直接插入数据库表. INSERT INTO `goods_transverter` ( `code`,`es_id`,`barcode`, `n ...

  2. sql 批量插入数据到Sqlserver中 效率较高的方法

    使用SqlBulk #region 方式二 static void InsertTwo() { Console.WriteLine("使用Bulk插入的实现方式"); Stopwa ...

  3. 使用SQL批量插入数据到数据库 以及一些SQL函数的语法

    批量插入100条记录 set nocount on declare @i int=1; while @i<=100 begin Insert into Client(id,ClientCode, ...

  4. sql批量插入数据之存储过程

    -- ============================================= -- Author: jf_ou -- Create date: 2016/03/22 -- Desc ...

  5. C# 批量插入表SQLSERVER SqlBulkCopy往数据库中批量插入数据

    #region 帮助实例:SQL 批量插入数据 多种方法 /// <summary> /// SqlBulkCopy往数据库中批量插入数据 /// </summary> /// ...

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

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

  7. 【sqlserver】批量插入10万数据

    DECLARE @LN VARCHAR(300),@MN VARCHAR(200),@FN VARCHAR(200)DECLARE @LN_N INT,@MN_N INT,@FN_N INTSET @ ...

  8. Oracle批量插入数据SQL语句太长出错:无效的主机/绑定变量名

    Oracle数据库,用mybatic批量插入数据: <insert id="saveBatch" parameterType="io.renren.entity.N ...

  9. SQL 2005批量插入数据的二种方法

    SQL 2005批量插入数据的二种方法 Posted on 2010-07-22 18:13 moss_tan_jun 阅读(2635) 评论(2) 编辑 收藏 在SQL Server 中插入一条数据 ...

随机推荐

  1. Java并发相关知识点梳理和研究

    1. 知识点思维导图 (图比较大,可以右键在新窗口打开) 2. 经典的wait()/notify()/notifyAll()实现生产者/消费者编程范式深入分析 & synchronized 注 ...

  2. react中使用decorator 封装context

    2020-03-27 react中使用decorator 封装context 在传统的react context中,子组件使用context十分繁琐,如果需要使用context的子组件多的话 每个组件 ...

  3. JVM内存结构详解

    从java编程语言说起... 1. Java编程语言简介 1.1 编程语言概述 系统级和应用级 系统级:C,C++,go,erlang 应用级:C#,Java,Python,Perl,Ruby,php ...

  4. 这一次搞懂SpringMVC原理

    @ 目录 前言 正文 请求入口 组件初始化 调用Controller 参数.返回值解析 总结 前言 前面几篇文章,学习了Spring IOC.Bean实例化过程.AOP.事务的源码和设计思想,了解了S ...

  5. VS Code WebApi系列——3、发布

    上两篇已经实现了WebApi及基于jwt的Token设置,那么功能做完了,该发布WebApi了.为什么要对发布进行一下说明呢,因为是基于vscode和.netcore的发布,所以可能会遇到莫名奇妙的问 ...

  6. Web api配置填坑攻略

    最近开始使用web api,开发调试过程还算顺利,现在项目已经发布,网站已经部署,结果浏览过程出现问题(不出问题好像不正常吧……),做个note开始填坑. 1.1号坑 咋一开始就爆出另一个程序正在使用 ...

  7. Spring Boot 分离资源文件打包

    Spring Boot项目默认的会打包成单一的jar文件,但是有时候我们并不想让配置文件.依赖包都跟可执行文件打包到一起.这时候可以在pom.xml文件中进行配置,从而使资源文件.依赖包和可执行文件分 ...

  8. django 分页器,序列化 ,MTV MVC

    序列化组件## from django.core import serializers # django自带的一个小型的序列化工具# def reg(request):# user_list = mo ...

  9. 微信小程序navigator带参数跳转及接收参数内容

    // index.wxml <navigator class='looks-view' wx:for="{{imgUrlNew}}" wx:key="index&q ...

  10. 微信小程序 wx:if 多条件判断

    <view wx:if="{{a}}">单个条件</view> <view wx:if="{{a || b}}">多个或条件 ...