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. SpringBoot设置mysql的ssl连接

    因工作需要,mysql连接需要开启ssl认证,本文主要讲述客户端如何配置ssl连接. 开发环境信息: SpringBoot: 2.0.5.RELEASE mysql-connector-java: 8 ...

  2. Flask URL构建

    Flask URL构建 url_for()函数对于动态构建特定函数的URL非常有用.该函数接受函数的名称作为第一个参数,以及一个或多个关键字参数,每个参数对应于URL的变量部分. 以下脚本演示了如何使 ...

  3. MyBatis 实体类属性与表字段不一致

    原文链接:https://blog.csdn.net/zx48822821/java/article/details/79050735 因为数据库一般设置为表的字段不区分大小写,所以数据库中表的字段通 ...

  4. java中Proxy类初探

    在java中提供了一个动态代理类,这个类位于java.lang.reflect包中的Proxy类中.什么是动态代理类呢?就是可以在运行时创建一个实现了一组给定接口的新类.听上去有点高深的样子,其实是提 ...

  5. Linux切换超级管理员root用户

    Ubuntu用$标志表示你现在处于普通用户,#表示超级用户. 普通用户会有限制,想从普通变成超级用户,可以输入 su 或 su - 命令,要求你输入密码, 你如记得密码就可以直接输入,再Enter即可 ...

  6. Probius:一个功能强大的自定义任务系统

    断更的这些日子,我又折腾了一个轮子,文末参考源码 大约在一年半以前写过一篇文章『探秘varian:优雅的发布部署程序』,里边有讲到我们采用类似lego的模块化方式来构建CICD的流程,虽能满足我们的需 ...

  7. Redis 持久化-AOF自动重写配置

    AOF自动重写 auto-aof-rewrite-min-size size auto-aof-rewrite-percentage percent 在 redis.conf 自动重写的默认配置: a ...

  8. Android studio debug apk包安装失败

    可在根目录gradle.properties中配置 android.injected.testOnly=false

  9. weblogic之高级进阶JMS的应用

    不仅Activemq提供的jms服务,Weblogic也提供了jms服务,很多项目是部署在Weblogic中,使用其提供的jms服务也是很多企业的选择,一直没亲手试过,今天试了下,遇到的小问题还挺多, ...

  10. centos 6.5 上安装jdk

    1.首先明确自己的电脑上32位还是64位,自己的电脑是32位 2.下载jdk进入到oracle公司的主页 把页面拖到最下面 点击上面这个就可以下载以前比较低的版本 这里选择 32位的源码包的方式,将源 ...