当前位置:  编程技术>.net/c#/asp.net

c#批量插入上万条数据到mysql中的方法

    来源: 互联网  发布时间:2014-08-30

    本文导语:  本节主要内容: 批量插入上万条数据到mysql的方法 本文使用了mysql的批量数据格式,例如:   INSERT INTO TABLES (LABLE1,LABLE2,LABLE3,...) VALUES(NUM11,NUM12,NUM13,...), (NUM21,NUM22,NUM23,...), .... (NUMn1,NUMn2,NUMn3,..); 每个账户的每个采集点就会...

本节主要内容:
批量插入上万条数据到mysql的方法

本文使用了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条语句重启一次事务。

例子:
 

代码示例:
///  
/// 执行多条SQL语句,实现数据库事务。 
/// mysql数据库 
/// 多条SQL语句 
public static void ExecuteSqlTran(List SQLStringList) 

    using (MySqlConnection conn = new MySqlConnection(MySqlHelper.ConnStr)) 

// www.
conn.Open(); 
MySqlCommand cmd = new MySqlCommand(); 
cmd.Connection = conn; 
MySqlTransaction tx = conn.BeginTransaction(); 
cmd.Transaction = tx; 
try 

    for (int n = 0; n < SQLStringList.Count; n++) 
    { 
string strsql = SQLStringList[n].ToString(); 
if (strsql.Trim().Length > 1) 

    cmd.CommandText = strsql; 
    cmd.ExecuteNonQuery(); 

       //后来加上的 
       if (n > 0 && (n % 500 == 0 || n == SQLStringList.Count - 1)) 

    tx.Commit(); 
    tx = conn.BeginTransaction(); 

    } 
    //tx.Commit();//原来一次性提交 

catch (System.Data.SqlClient.SqlException E) 

    tx.Rollback(); 
    throw new Exception(E.Message); 

    } 

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • MySQL插入数据时插入无效列的解决方法
  • 从jsp向数据库插入日期时间的方法
  • 求用sed插入多行带特殊字符的方法
  • 把数据批量插入具有Identity列的表的方法
  • 分享MYSQL插入数据时忽略重复数据的方法
  • 探讨:sql插入空,默认1900-01-01 00:00:00.000的解决方法详解
  • SQL Server手工插入标识列的方法
  • Oracle插入日期数据常见的2个问题和解决方法
  • mysql insert if not exists防止插入重复记录的方法
  • 用shell脚本在mysql表中批量插入数据的方法
  • Java获取最后插入MySQL记录的自增ID值的3种方法
  • sql server 2008 将某表中数据随机插入另一个表的方法
  • 在Oracle中向视图中插入数据的方法
  • PHP大批量插入数据库的3种方法和速度对比
  • Oracle 插入超4000字节的CLOB字段的处理方法
  • jsp页面中插入css样式的三种方法总结
  • Mysql插入中文变为全问号???的问题 解决方法
  • C++操作MySQL大量数据插入效率低下的解决方法
  • 存储过程配合UpdateDaset方法批量插入Dataset数据实现代码
  • codeigniter使用技巧批量插入数据实例方法分享
  • C++ MultiMaps 成员 insert():插入元素
  • access中记录插入时是不是总在最后一行插入的?
  • C++ Maps 成员 insert():插入元素
  • 在javascript中(如onclick事件中)可以插入用JSP编写的验证权限的代码吗?那该怎样插入呢?
  • C++ Lists(链表) 成员 insert():插入一个元素到list中
  • 向数据库中插入数据并返回当前插入的行数及全局变量@@IDENTITY应用
  • C++ Double Ended Queues(双向队列) 成员 insert():插入一个元素到双向队列中
  • 我从JSP页将数据插入到oracle数据库中,为何汉字插入后数据库中显示为乱码呢?
  • C++ Vectors 成员 insert():插入元素到Vector中
  • 循环里面执行sql插入语句只执行第一个插入,为什么??
  • C++ Strings(字符串) 成员 insert():插入字符


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3