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;
}
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
2013-12-20 silverlight 进行本地串口调用的一种可行的解决方法 之silverlight端代码