使用的方式是 MySqlBulkLoader

方法如下:

1. 转化datatable 为文件

2. 使用MySqlBulkLoader 进行数据的加载

代码:

public static void CreateCSVfile(DataTable dtable, string strFilePath)
{
    StreamWriter sw = new StreamWriter(strFilePath, false);
    int icolcount = dtable.Columns.Count;
    foreach (DataRow drow in dtable.Rows)
    {
    for (int i = 0; i < icolcount; i++)
    {
        if (!Convert.IsDBNull(drow[i]))
        {
        sw.Write(drow[i].ToString());
        }
        if (i < icolcount - 1)
        {
        sw.Write(",");
        }
    }
    sw.Write(sw.NewLine);
    }
    sw.Close();
    sw.Dispose();
}
private void ImportMySQL()
{
    DataTable orderDetail = new DataTable("ItemDetail");
    DataColumn c = new DataColumn();        // always
    orderDetail.Columns.Add(new DataColumn("ID", Type.GetType("System.Int32")));
    orderDetail.Columns.Add(new DataColumn("value", Type.GetType("System.Int32")));
    orderDetail.Columns.Add(new DataColumn("length", Type.GetType("System.Int32")));
    orderDetail.Columns.Add(new DataColumn("breadth", Type.GetType("System.Int32")));
    orderDetail.Columns.Add(new DataColumn("total", Type.GetType("System.Decimal")));
    orderDetail.Columns["total"].Expression = "value/(length*breadth)";
    //Adding dummy entries
    DataRow dr = orderDetail.NewRow();
    dr["ID"] = 1;
    dr["value"] = 50;
    dr["length"] = 5;
    dr["breadth"] = 8;
    orderDetail.Rows.Add(dr);
    dr = orderDetail.NewRow();
    dr["ID"] = 2;
    dr["value"] = 60;
    dr["length"] = 15;
    dr["breadth"] = 18;
    orderDetail.Rows.Add(dr);
    //Adding dummy entries
    string connectMySQL = "Server=localhost;Database=test;Uid=username;Pwd=password;";
    string strFile = "/TempFolder/MySQL" + DateTime.Now.Ticks.ToString() + ".csv";
    //Create directory if not exist... Make sure directory has required rights..
    if (!Directory.Exists(Server.MapPath("~/TempFolder/")))
    Directory.CreateDirectory(Server.MapPath("~/TempFolder/"));
    //If file does not exist then create it and right data into it..
    if (!File.Exists(Server.MapPath(strFile)))
    {
    FileStream fs = new FileStream(Server.MapPath(strFile), FileMode.Create, FileAccess.Write);
    fs.Close();
    fs.Dispose();
    }
    //Generate csv file from where data read
    CreateCSVfile(orderDetail, Server.MapPath(strFile));
    using (MySqlConnection cn1 = new MySqlConnection(connectMySQL))
    {
    cn1.Open();
    MySqlBulkLoader bcp1 = new MySqlBulkLoader(cn1);
    bcp1.TableName = "productorder"; //Create ProductOrder table into MYSQL database...
    bcp1.FieldTerminator = ",";
    bcp1.LineTerminator = "\r\n";
    bcp1.FileName = Server.MapPath(strFile);
    bcp1.NumberOfLinesToSkip = 0;
    bcp1.Load();
    //Once data write into db then delete file..
    try
    {
        File.Delete(Server.MapPath(strFile));
    }
    catch (Exception ex)
    {
        string str = ex.Message;
    }
    }
}

Mysql 批量插入数据的方法相关推荐

  1. thinkphp mysql批量入库_ThinkPHP3.2框架使用addAll()批量插入数据的方法

    本文实例讲述了ThinkPHP3.2框架使用addAll()批量插入数据的方法.分享给大家供大家参考,具体如下: thinkphp中model类的addAll()方法可以将数据同时添加到数据库中. / ...

  2. php addall,ThinkPHP3.2框架使用addAll()批量插入数据的方法

    这篇文章主要介绍了ThinkPHP3.2框架使用addAll()批量插入数据的方法,结合实例形式分析了thinkPHP针对单条数据插入及批量数据插入操作的相关实现技巧,需要的朋友可以参考下 本文实例讲 ...

  3. addall php,ThinkPHP3.2框架使用addAll()批量插入数据的方法

    本文实例讲述了ThinkPHP3.2框架使用addAll()批量插入数据的方法.分享给大家供大家参考,具体如下: thinkphp中model类的addAll()方法可以将数据同时添加到数据库中. / ...

  4. php yii 插入,YII框架批量插入数据的方法

    本文实例讲述了YII框架批量插入数据的方法.分享给大家供大家参考,具体如下: public function insertSeveral($table, $array_columns) { $sql ...

  5. 三种批量插入数据的方法

    批量插入数据 本文将介绍三种批量插入数据的方法.第一种方法是使用循环语句逐个将数据项插入到数据库中:第二种方法使用的是SqlBulkCopy,使您可以用其他源的数据有效批量加载 SQL Server ...

  6. Mysql批量插入数据问题解决和优化

    Mysql批量插入数据问题解决和优化 一.问题描述 项目中mysql批量插入大概50000左右数据,使用事务和批量,但是速度依旧很慢,大约60s左右,迫切希望改进这个问题. 二.问题原因 尽管是批量a ...

  7. MySQL批量插入数据的几种方法

    最近公司要求测试数据库的性能,就上网查了一些批量插入数据的代码,发现有好几种不同的用法,插入同样数据的耗时也有区别 别的先不说,先上一段代码与君共享 方法一: package com.bigdata; ...

  8. mysql 批量插入数据方法_mysql大批量插入数据的4种方法示例

    前言 本文主要给大家介绍了关于mysql大批量插入数据的4种方法,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧 方法一:循环插入 这个也是最普通的方式,如果数据量不是很大,可以使用, ...

  9. MySQL(一) Python操控mysql批量插入数据

    在Python中,通过pymysql模块,编写简短的脚本,即方便快捷地控制MySQL数据库 一.连接数据库 使用的函数:pymysql.connect 语法:db=pymysql.connect(ho ...

最新文章

  1. 如何打开Tango的ADF文件?
  2. python3生成器与迭代器_Python3迭代器与生成器
  3. php源码 乱码 通达oa_php中文乱码问题的终极解决方案汇总
  4. ThinkPHP实现文章上一篇和下一篇
  5. 美赛小队集训-2019年D题O奖讨论
  6. 支付宝当面付扫码支付支付后不回调_新开支付宝不满90天当面付收款第二天到账怎么办?如何实现秒到而不是冻结的来看看吧!...
  7. 微弱信号检测技术在机械早期故障探查中的应用研究
  8. Bridging signals
  9. 风口下的追逐:AI正在驾驶、客服、教育领域疾驰
  10. 个人财务管理系统项目
  11. 宇宙最强,meltdown论文中英文对照版(三)
  12. 对文件或文件夹进行删除、移动、windows10重命名等操作时,系统可能提示“操作无法完成,因为其中的文件夹已在另一程序中打开,请关闭该文件或文件夹,然后重试
  13. 使用java破解wifi(win10环境)
  14. BI 不是可以拖拉拽取数吗?为什么还要 SQL 取数 ?
  15. 数据治理-数据质量-数据质量的概念和维度
  16. 2023年某科技公司前端开发初级岗的面试笔试真题(含选择题答案、问答题解析、机试题源码)
  17. python爬虫真假网址,python爬取福利网站图片完整代码,懂得人都懂
  18. mes系统质量管理通常是怎样运行的?
  19. MPU6500模块调试笔记——小心冒牌货
  20. virtualpc2007 95/98系统驱动,虚拟工具,softice安装

热门文章

  1. Android Studio(IDEA)太占系统盘?帮你移动下
  2. 服务器定期巡检项目,服务器定期巡检制度..docx
  3. anguarjs 上传图片预览_MIUI12 20.10.29更新,新版「模糊预览图」
  4. 【新星计划】MATLAB-字符串处理
  5. Centos7修改Docker默认存储位置
  6. matlab simulink 直线一级倒立摆控制方法研究 状态观测
  7. 如何解决两个相邻的span中间空隙
  8. Chrome反压缩JS代码:Pretty Print显示可读代码
  9. java 64位 默认分配内存大小_查看你机器中Java程序堆内存的默认初始大小和最大大小...
  10. yum源无法安装mysql_Centos7上使用官方YUM源安装Mysql