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 ...
随机推荐
- 独家揭秘,106岁的IBM靠什么完成了世纪大转型|钛度专访
IBM大中华区董事长陈黎明 到2017年2月,陈黎明就担任IBM大中华区董事长整整两年了. 五年前,IBM历史上首位女CEO也是第9位CEO罗睿兰上任,三年前,IBM在罗睿兰的带领下以数据与分析.云. ...
- MSF基础攻击实践报告
MSF基础攻击实践 MSF的六个模块:exploit,encoder,payload,aux,post,nops exploit——渗透攻击模块 测试者利用它来攻击一个系统,程序,或服务,以获得开发者 ...
- Python3基础 print(,end=) 输出内容的末尾加入空格
Python : 3.7.0 OS : Ubuntu 18.04.1 LTS IDE : PyCharm 2018.2.4 Conda ...
- [BZOJ2117]Crash的旅游计划
Description 眼看着假期就要到了,Crash由于长期切题而感到无聊了,因此他决定利用这个假期和好友陶陶一起出去旅游. Crash和陶陶所要去的城市里有N (N > 1) 个景点,Cra ...
- POJ 3268 Silver Cow Party(最短路&Dijkstra)题解
题意:有n个地点,有m条路,问从所有点走到指定点x再走回去的最短路中的最长路径 思路:用Floyd超时的,这里用的Dijkstra. Dijkstra感觉和Prim和Kruskal的思路很像啊.我们把 ...
- hdu 6301 Distinct Values(贪心)题解
题意:长为n的串,给你m个区间,这些区间内元素不重复,问这样的串字典序最小为? 思路:用set保存当前能插入的元素,这样就能直接插入最小元素了.对操作按l排序,因为排过的不用排,所以两个指针L,R是一 ...
- python 简单的猜数字游戏
!/usr/bin/env python --encoding:utf-8-- import random think=random.randint(1,10) print ("...... ...
- BZOJ 4569 【SCOI2016】 萌萌哒
题目链接:萌萌哒 我先不吐槽题目名……这道题的并查集好像我们考过……既然那道题我没写就来把这道题写了吧(雾 这道题由于合并操作只有\(m\)次,那么很显然的一个想法就是把建一棵线段树类似物,然后每次在 ...
- 51nod 1225 余数的和 数学
1225 余数之和 基准时间限制:1 秒 空间限制:131072 KB 分值: 80 难度:5级算法题 收藏 关注 F(n) = (n % 1) + (n % 2) + (n % 3) + ... ...
- Ubuntu终端常用的快捷键,光标移动到开始位置
光标操作,实用 Ctrl+a 光标移动到开始位置 Ctrl+e 光标移动到最末尾 删除 Ctrl+k 删除此处至末尾的所有内容 Ctrl+u 删除此处至开始的所有内容 删除单个 Ctrl+d 删除当前 ...