zoukankan      html  css  js  c++  java
  • Excel 批量快速导入mySQL 解决方案~~

    1 最近在做一个交叉表的数据批量导入,采用过很多方式一直没有特别理想的解决方案,昨天终于解决了,以下是测试记录:
    2
    3 OpenFileDialog openfile = new OpenFileDialog();
    4 openfile.Filter = "工作薄(*.xlsx)|*.xlsx|所有文件(*.*)|*.*";
    5 if (openfile.FilterIndex == 1 && openfile.ShowDialog() == DialogResult.OK)
    6 {
    7 string path = openfile.FileName;
    8 string strConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + path + ";Extended Properties=\"Excel 12.0;HDR=YES\"";
    9 System.Data.OleDb.OleDbConnection oleConn = new System.Data.OleDb.OleDbConnection(strConn);
    10 oleConn.Open();
    11 System.Data.OleDb.OleDbDataAdapter oleDa = new System.Data.OleDb.OleDbDataAdapter("select * from [sheet1$]", oleConn);
    12 DataSet ds = new DataSet();
    13 oleDa.Fill(ds);
    14 strConn.Clone();
    15 dgvJjList.DataSource = ds.Tables[0];
    16 }
    17
    18 this.backgroundWorker1.RunWorkerAsync();
    19
    20 数据导入:分为两个步骤:第一、先把数据从EXCEL导入到DataGridView;第二、启动后台处理线程。
    21
    22 在线程中同步更新UI控件:
    23
    24 public delegate void MyInvoke(string str);
    25
    26 delegate void Starttqdata();
    27
    28 public void SetTxt(string str)
    29 {
    30 textBox2.Visible = true;
    31 textBox2.Text = "正在导入"+str.ToString()+"条数据.";
    32 }
    33
    34 ////
    35
    36 GetDataGridView()
    37
    38 {
    39
    40 ////DataGridView数据绑定
    41
    42 }
    43
    44 ////
    45
    46 在线程中调用:
    47
    48 MyInvoke mi = new MyInvoke(SetTxt);
    49 BeginInvoke(mi, new object[] { row.Index.ToString() });
    50
    51 this.Invoke(new Starttqdata(GetDataGridView));
    52
    53 后台线程处理:
    54
    55 一种方式:
    56
    57 1、先把数据全部插入到一个临时表中,和你导入的目标表相同的表结构
    58
    59 2、然后利用Load data OutFile到一个*.txt文本文件中
    60
    61 3、利用Load data Infile *.txt到目标数据表中
    62
    63 另外一种方式:
    64
    65 1、先把数据全部插入到一个临时表中,和你导入的目标表相同的表结构
    66
    67 2、将临时表数据导入到目标数据表中,当然要判断是否有该记录,如有更新,没有插入,呵呵,没有load data Infile Replace方便了。
    68
    69 10W条数据在10s-20s之间,应该还是在可承受范围之内。当然更为合适的方式就是导入数据的excel格式与你的目标表格式相同,那就执行效率更高了,20W条数据只需要几s就搞定了。
  • 相关阅读:
    VMware虚拟机安装
    软件测试面试题汇总
    软件测试步骤详解
    软件测试的分类&软件测试生命周期
    BUG 的生命周期
    Jmeter连接Mysql数据库
    Navicat连接Mysql报错:Client does not support authentication protocol requested by server;
    Mysql安装(win10 64位)
    Jmeter生成测试报告
    (转)Jmeter http请求之content-type
  • 原文地址:https://www.cnblogs.com/AriLee/p/1966572.html
Copyright © 2011-2022 走看看