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 ...
随机推荐
- 20155302 2016-2017-2 《Java程序设计》第八周学习总结
20155302 2016-2017-2 <Java程序设计>第八周学习总结 教材学习内容总结 在NIO中有几个比较关键的概念:Channel(通道),Buffer(缓冲区),Select ...
- 20155305乔磊2016-2017-2《Java程序设计》第九周学习总结
20155305 2016-2017-2 <Java程序设计>第九周学习总结 教材学习内容总结 JDBC入门 JDBC简介 1.JDBC是java联机数据库的标准规范,它定义了一组标准类与 ...
- http://www.cvvision.cn/2888.html
图像处理(一)图像变形(1)矩形全景图像还原-Siggraph 2014 著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处.作者:cvvision链接:http://www.cvvi ...
- 对OpenCV中seamlessClone的初步实验
seamlessClone是OpenCV中新出现的函数,应该说如果能够基于较为准确的图像分割,能够得到很好的结果. 原始的前景,背景 三种flag下的融合结果 //注意头文件中添加 #inclu ...
- 关于Cooperation.GTST
Cooperation.GTST团队项目简介 我们打算利用Android Studio开发一款博客园的Android APP,初步设想能够实现在Android手机平台使用博客园的相关功能,后续想法会在 ...
- ENC28J60
8 KB发送接收数据包双端口 SRAM
- Windows10下用Anaconda3安装TensorFlow教程【转】
本文转载自:https://www.cnblogs.com/HongjianChen/p/8385547.html 1. 安装好Anaconda3版本 (1) 注:可以发现最新版本是Anaconda5 ...
- LA 4636 积木艺术
https://vjudge.net/problem/UVALive-4636 题意: 给出正视图和侧视图,判断最少要用多少个立方体. 思路: 首先正视图里出现的积木个数都是必须的,记录下每一列积木的 ...
- 【源码学习之spark core 1.6.1 standalone模式下的作业提交】
说明:个人原创,转载请说明出处 http://www.cnblogs.com/piaolingzxh/p/5656876.html 未完待续
- 更改CentOS7登录画面的分辨率
设置成用VNC Viewer去连接虚拟机的CentOS7 , 可是分辨率都得等登录了才能生效. 登录画面显示时,分辨率老大了. 找到了下面的文章 , 把 home/<user>/.conf ...