Mysql 批量插入数据的方法
使用的方式是 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 批量插入数据的方法的更多相关文章
- python使用MySQLdb向mySQL批量插入数据的方法
该功能通过调用mySQLdb python库中的 cursor.executemany()函数完成批量处理. 今天用这个函数完成了批量插入 例程: def test_insertDB(options) ...
- sqlserver 下三种批量插入数据的方法
本文将介绍三种批量插入数据的方法,需要的朋友可以参考下 本文将介绍三种批量插入数据的方法.第一种方法是使用循环语句逐个将数据项插入到数据库中:第二种方法使用的是SqlBulkCopy,使您可以用其他源 ...
- MySQL批量插入数据的几种方法
最近公司要求测试数据库的性能,就上网查了一些批量插入数据的代码,发现有好几种不同的用法,插入同样数据的耗时也有区别 别的先不说,先上一段代码与君共享 方法一: package com.bigdata; ...
- mysql批量插入数据的基类
自己设计的一个mysql数据库批量添加数据的基类.用于批量向mysql数据库添加数据,子类实现起来很简单,自测性能也还不错. 1.基类实现-BatchAddBase using System.Coll ...
- mysql 批量插入数据过多的解决方法
使用场景: 测试时需要插入100w的数据,跑sql脚本插入非常慢. 存储过程如下: //DELIMITER DROP PROCEDURE if EXISTS createAmountCount; cr ...
- mysql 批量插入数据
MySQL使用INSERT插入多条记录,应该如何操作呢?下面就为您详细介绍MySQL使用INSERT插入多条记录的实现方法,供您参考. 看到这个标题也许大家会问,这有什么好说的,调用多次INSERT语 ...
- mysql批量插入数据优化
一.问题 很早以前做了一个更新功能,就是将A表中的数据全部查找出来,相对B表中改变的数据更新B表,B表中没有的数据插入B表. 最近发现该功能执行速率减慢,有时还跑超时.原来是A表中数据渐渐变多,就有了 ...
- SQL Server 批量插入数据的方法
运行下面的脚本,建立测试数据库和表. --Create DataBase create database BulkTestDB; go use BulkTestDB; go --Create Tabl ...
- 在 SQL 中 快速 批量 插入数据的方法
方法1:逐条执行,速度慢. INSERT INTO testimport (name, message) VALUES ('testname', 'jfksdfkdsfjksadljfkdsfjsdl ...
随机推荐
- linux 异常
1. NoRouteToHostException异常问题的原因及解决 (转自:http://performtest163.blog.163.com/blog/static/1400769642011 ...
- 远程连接软件TeamViewer
(1)先在windows下安装Teamviewer软件,地址:https://pan.baidu.com/s/1rWxRBtNbn3OMmg-8YaYWRQ (2)再在linux下安装Teamview ...
- cmd中执行jar文件命令(待参数)
cmd中执行jar文件命令(待参数) 1,jar文件路径:F:\products 2,cmd命令: --两个日期参数(空格隔开) java -jar F:\products\analysis.jar ...
- linux及安全《Linux内核设计与实现》第三章——20135227黄晓妍
第三章 (由于linux不区分进程和线程,所以它们在linux中被称为task,也叫任务) 总结:本章主要包括进程以及线程的概念和定义,Linux内核如何管理每个进程,他们在内核中如何被列举,如何创建 ...
- linux及安全《Linux内核设计与实现》第一章——20135227黄晓妍
<linux内核设计与实现>第一章 第一章Linux内核简介: 1.3操作系统和内核简介 操作系统:系统包含了操作系统和所有运行在它之上的应用程序.操作系统是指整个在系统中负责完成最基本功 ...
- 癌症免疫细胞治疗知识:CAR-T与TCR-T的区别在哪里?--转载
肿瘤免疫治疗,实际上分为两大类.一种把肿瘤的特征“告诉”免疫细胞,让它们去定位,并造成杀伤:另一种是解除肿瘤对免疫的耐受/屏蔽作用,让免疫细胞重新认识肿瘤细胞,对肿瘤产生攻击(一般来说,肿瘤细胞会巧妙 ...
- hdu 2204 Eddy's爱好 容斥原理
Eddy's爱好 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Problem ...
- 安装 bochs
sudo apt-get install bochs 以后接着安装bochs-x
- JAVA基础知识详解
1. JVM是什么 JVM是Java Virtual Mechine的缩写.它是一种基于计算设备的规范,是一台虚拟机,即虚构的计算机. JVM屏蔽了具体操作系统平台的信息(显然,就像是我们在电脑上开了 ...
- m_Orchestrate learning system---二十八、字體圖標iconfont到底是什麼
m_Orchestrate learning system---二十八.字體圖標iconfont到底是什麼 一.总结 一句话总结: 阿里巴巴 图标库 iconfont-阿里巴巴矢量图标库 1.表格的t ...