mysql c# 执行多条sql语句_c#批量插入上万条数据到mysql中的方法

本节主要内容:

批量插入上万条数据到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);

}

}

}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值