mysql的批量数据格式,

比如
INSERT INTO TABLES (LABLE1,LABLE2,LABLE3,...) 
VALUES(NUM11,NUM12,NUM13,...), 
(NUM21,NUM22,NUM23,...),
....
(NUMn1,NUMn2,NUMn3,..);

我在前文中叙述的,每个账户的每个采集点就会生成几百个数据,这几百个数据我组合成上述一条语句,20多个账户多个采集点我一共生成上述语句300--800多条,每条的数据项300-500个,所以每次插入的数据共计10000--50000条。

我把每条insert语句都保存在一个SQLStringList之中,又 在网上找点资料,采用了事务处理方式,本来我的事务方式是所有sql语句放在一个事务里,但有热心朋友告知“每当执行1000条DBCommand就提交(Commit)事务,然后再次开启事务,这样比较好。把过多的命令放在一个事务中,一旦超过物理内存分配限制,你的程序会变得很慢很慢。”

所以我后来修改了一下,每500条语句重启一次事务。c#代码如下:

   1:          public static void ExecuteSqlTran(List<string> SQLStringList)  
   2:          {  
   3:              using (MySqlConnection conn = new MySqlConnection(MySqlHelper.ConnStr))  
   4:              {  
   5:                  conn.Open();  
   6:                  MySqlCommand cmd = new MySqlCommand();  
   7:                  cmd.Connection = conn;  
   8:                  MySqlTransaction tx = conn.BeginTransaction();  
   9:                  cmd.Transaction = tx;  
  10:                  try
  11:                  {  
  12:                      for (int n = 0; n < SQLStringList.Count; n++)  
  13:                      {  
  14:                          string strsql = SQLStringList[n].ToString();  
  15:                          if (strsql.Trim().Length > 1)  
  16:                          {  
  17:                              cmd.CommandText = strsql;  
  18:                              cmd.ExecuteNonQuery();  
  19:                          }  
  20:                          //后来加上的
  21:                          if (n > 0 && (n % 500 == 0 || n == SQLStringList.Count - 1))  
  22:                          {  
  23:                              tx.Commit();  
  24:                              tx = conn.BeginTransaction();  
  25:                          }  
  26:                      }  
  27:                      //tx.Commit();//原来一次性提交
  28:                  }  
  29:                  catch (System.Data.SqlClient.SqlException E)  
  30:                  {  
  31:                      tx.Rollback();  
  32:                      throw new Exception(E.Message);  
  33:                  }  
  34:              }  
  35:          }  

[转载]mysql插入大量数据的更多相关文章

  1. mysql 插入/更新数据

    mysql 插入/更新数据 INSERT 语句 1.一次性列出全部字段的值,例如: INSERT INTO student VALUES('Chenqi','M', 29); INSERT INTO ...

  2. MySQL插入中文数据出现?号

    原文转载自:https://blog.csdn.net/LynneZoe/article/details/79174119 运行环境:win10 mysql版本:Mysql5.6 做一个项目的时候,向 ...

  3. C API向MySQL插入批量数据的快速方法——关于mysql_autocommit

    MySQL默认的数据提交操作模式是自动提交模式(autocommit).这就表示除非显式地开始一个事务,否则每个查询都被当做一个单独的事务自动执行.我们可以通过设置autocommit的值改变是否是自 ...

  4. laravel 解决mysql插入相同数据的问题

    1.背景: 每天0点定时任务统计数据,实现目标是统计时如果没有今天的统计数据,那就执行insert操作 如果存在那就执行update操作: 代码逻辑 1 if(报表存在){ 2 update(); 3 ...

  5. mysql插入中文数据变成问号怎么处理

    插入中文数据变成问号,一般都是因为字符集没有设置成utf8的原因 1.修改字符集: ALTER TABLE 表名 MODIFY 列名 类型(50) CHARACTER SET "utf8&q ...

  6. mysql插入表数据中文乱码问题解决方案

    一.问题 开发中遇到将其它数据库数据插入到mysql数据库表中一直会报类似如下错误: Incorrect string value: '\xE6\x88\x91' for column 'name' ...

  7. MySQL插入大批量数据时报错“The total number of locks exceeds the lock table size”的解决办法

    事情的原因是:我执行了一个load into语句的SQL将一个很大的文件导入到我的MySQL数据库中,执行了一段时间后报错"The total number of locks exceeds ...

  8. MySQL 插入 中文数据乱码解决

    问题描述: 1.在命令行中进行插入,没有问题.但是显示存在部分乱码 2.在JDBC中插入成功.中文是直接以“??”形式显示. 通过Navicat客户端查看 与在网页中看到的一一致,说明读取没有问题,问 ...

  9. MySQL插入大量数据探讨

    笔者想进行数据库查询优化探索,但是前提是需要一个很大的表,因此得先导入大量数据至一张表中. 准备工作 准备一张表,id为主键且自增: 方案一 首先我想到的方案就是通过for循环插入 xml文件: &l ...

随机推荐

  1. SCVMM配置

    SCVMM添加工作组主机 1.准备一台物理主机并且安装WindowsServer 2012名为HV2(工作组不加域)接着添加hyper-v角色 2.把SCVMM1服务器上的SCVMM2012代理程序( ...

  2. windows无法搜索新更新 80072ee2

      http://windows.microsoft.com/zh-cn/windows/windows-update-error-80072ee2#1TC=windows-7    

  3. Codeforces Round #340 (Div. 2) B. Chocolate 水题

    B. Chocolate 题目连接: http://www.codeforces.com/contest/617/problem/D Descriptionww.co Bob loves everyt ...

  4. hdu 5591 ZYB's Game 博弈论

    ZYB's Game Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=55 ...

  5. 创建C#串口通信程序详解

    在.NET平台下创建C#串口通信程序,.NET 2.0提供了串口通信的功能,其命名空间是System.IO.Ports.这个新的框架不但可以访问计算机上的串口,还可以和串口设备进行通信.我们将使用标准 ...

  6. [连载]JavaScript讲义(05)--- 数据处理

    watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvamFja2ZydWVk/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA ...

  7. CheckBoxList 只能选2个选项

    // ////下面判断用户是否多选,每选择一次比较一次,看是否超过规定名额 //string ClickedItem = Request.Form["__EVENTTARGET"] ...

  8. IIS配置相关

    转:让Windows Server 2008 + IIS 7+ ASP.NET 支持10万并发请求 http://www.cnblogs.com/dudu/archive/2009/11/10/160 ...

  9. ThinkPHP中pathinfo模式与URL重写

    Thinkphp中的pathinfo模式 http://serverName/appName/module/action/id/1/ pathinfo模式 在不考虑路由的情况下,第一个参数会被解析成模 ...

  10. SecureCRT 滚动条设置

    不久前在Debian下使用kermit时发现kermit有一些优点,比如当串口上不断有信息打印时,仍然可以通过拖动滚动条来查看以前打印的信息,并且滚动条不会滚动到最下面.当按下回车键时,滚动条会自动滚 ...