C#批量写入MySQL100w条数据
来源:互联网 发布:python ipython 编辑:程序博客网 时间:2024/05/20 02:25
在项目中遇到需要进行对大数据量的表进行查询,但是不在现场,取不到现场数据。所以需要自己来造数据,同时也可以测试不同引擎,不同索引对插入大数据量的操作耗时的影响。
上代码:
using COMS_Bridge;using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Threading;using System.Threading.Tasks;using System.Windows.Forms;namespace 数据库{ public partial class Form1 : Form { List<string> SQLStringList = new List<string>();//存放sql语句 List<int> ChList = new List<int>(); MysqlPersistance mm = new MysqlPersistance(); ParamAlarmParam pp = new ParamAlarmParam(); public delegate void DBhander(); public Form1() { InitializeComponent(); } public class ButtonEx : Button { public ButtonEx() { SetStyle(ControlStyles.Selectable, false); } } private void button1_Click(object sender, EventArgs e) { BasicDataParam bp = new BasicDataParam(); BasicData bd = new BasicData(); DBhander hander = new DBhander(wei); hander.BeginInvoke(new AsyncCallback(callbackp),null);//winform用按钮触发,所以只能用异步操作了,callbackp是回调函数,没加具体方法 } public void wei() { MysqlPersistance ggg = new MysqlPersistance(); ggg.deleteTB("basicdata2"); List<string> paramalarmList = new List<string>(); DateTime starttime = DateTime.Now; for (int i = 1; i <= 1000000; i++) { string sql = string.Format("insert into basicdata2 (camID,traficVolume,traficUp,traficDown,carID,detectTime,locateRoad,direction,speed,carHeadway,carSpaceHeadway)values({0},{1},{2},{3},{4},'{5}',{6},{7},{8},{9},{10});select @@Identity as id;", i, i, i, i, i, DateTime.Now, 1, 1, 45, 3, 3 );//数据随意写,满足业务需求就好 paramalarmList.Add(sql); if (i % 2000 == 0)//两千行插入一次,测试过500行的,效果差不多,如果每行数据较多那么就要限制到500行了 { MysqlHelper.Default.ExecuteNoQueryTranBigDate(paramalarmList); paramalarmList.Clear(); } } DateTime endttime = DateTime.Now; TimeSpan dif = endttime - starttime; MessageBox.Show(dif.ToString());//提醒操作完毕,显示消耗时间 } public void callbackp(IAsyncResult result)//回调函数 { } private void Form1_Load(object sender, EventArgs e) { //skinEngine1.SkinFile = Application.StartupPath + @"\EmeraldColor1.ssk"; skinEngine1.SkinFile = Application.StartupPath + @"\MidsummerColor1.ssk";//这是德玛西亚的皮肤,不用搭理 //skinEngine1.SkinFile = Application.StartupPath + @"\Page.ssk";}}
public bool ExecuteNoQueryTranBigDate(List<String> SQLStringList) { makeParam(); using (MySqlConnection conn = new MySqlConnection(connectionString)) { 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]; if (strsql.Trim().Length > 1) { cmd.CommandText = strsql; //PrepareCommand(cmd, conn, tx, strsql, null); cmd.ExecuteNonQuery(); } if (n > 0 && (n % 500 == 0 || n == SQLStringList.Count - 1))//如果上面限制了2000,那么这儿就不用限制了。两种方法 { tx.Commit(); tx = conn.BeginTransaction(); } } //tx.Commit();//原来一次性提交 return true; } catch (System.Data.SqlClient.SqlException E) { tx.Rollback(); throw new Exception(E.Message); } } }
void makeParam() { connectionString = string.Format("Data Source={0};User ID={1};Password={2};DataBase={3};Charset={4};", dbIpAddr, userName, passwd, dbName, charset); }//把数据库信息直接赋给这五个参数,生成connectionString
结果总消耗花时间为:00:04:0924阅读全文
0 0
- C#批量写入MySQL100w条数据
- c#中往mysql里批量插入上万条数据
- sqlserver数据批量写入(转)
- Hbase之批量数据写入
- Laravel批量写入数据详解
- Java多线程B站爬虫与45万条视频数据,mysql批量写入性能对比,附代码
- 百万条数据批量导入
- C#中批量数据导入,上十万条数据的导入。
- 批量写数据---将XML数据批量写入数据库
- 批量写数据---将XML数据批量写入数据库
- C#批量添加数据
- 批量写入含Clob类型的数据
- DataTable的数据批量写入数据库
- DataTable的数据批量写入数据库
- SQLite批量数据写入优化方法
- DataTable的数据批量写入数据库
- SQLite批量数据写入优化方法
- DataTable的数据批量写入数据库
- 区块链技术性感依旧:咔咔房链想吃REITs这个大蛋糕
- 实例展示elasticsearch集群生态,分片以及水平扩展
- Netty学习总结(6)——Netty使用注意事项
- Linux ssh exit,启动的后台进程不会停止
- kaggle Titanic泰坦尼克
- C#批量写入MySQL100w条数据
- java8 lambda表达式原理
- 利用poi完成导出excel功能
- ubuntu Git升级
- TabLayout的使用
- 【选择排序】
- 产品需求文档分享:「病利贴」
- struts2架构中核心对象的探索—— Dispatcher&ConfigurationProvider
- vue2 + router + vuex + vux + axios 开发的一点总计