asp.net 使用SqlBulkCopy极速插入数据到 SQL Server
程序员文章站
2023-12-05 17:45:10
按这个来算,我们那个发水票的时间就会由 10分钟-->20秒,这可太神奇了。 于是乎,下demo,测试,改成自己一般使用的方法测试,nnd,还真可以说是极速。 在此贴...
按这个来算,我们那个发水票的时间就会由 10分钟-->20秒,这可太神奇了。
于是乎,下demo,测试,改成自己一般使用的方法测试,nnd,还真可以说是极速。
在此贴上我的demo:sqlbulkcopy.rar
using system;
using system.diagnostics;
using system.data;
using system.data.sqlclient;
using microsoft.applicationblocks.data;
namespace consoleappinserttest
{
class program
{
static int count = 1000000; //插入的条数
static void main(string[] args)
{
long sqlbulkcopyinsertruntime = sqlbulkcopyinsert();
console.writeline(string.format("使用sqlbulkcopy插入{1}条数据所用的时间是{0}毫秒", sqlbulkcopyinsertruntime, count));
long commoninsertruntime = commoninsert();
console.writeline(string.format("普通方式插入{1}条数据所用的时间是{0}毫秒", commoninsertruntime, count));
console.readkey();
}
/// <summary>
/// 使用普通插入数据
/// </summary>
/// <returns></returns>
private static long commoninsert()
{
stopwatch stopwatch = new stopwatch();
stopwatch.start();
for (int i = 0; i < count; i++)
{
sqlhelper.executenonquery(sqlhelper.sqlconnection, commandtype.text, "insert into passport(passportkey) values('" + guid.newguid() + "')");
}
stopwatch.stop();
return stopwatch.elapsedmilliseconds;
}
/// <summary>
/// 使用sqlbulkcopy方式插入数据
/// </summary>
/// <returns></returns>
private static long sqlbulkcopyinsert()
{
stopwatch stopwatch = new stopwatch();
stopwatch.start();
datatable datatable = gettableschema();
for (int i = 0; i < count; i++)
{
datarow datarow = datatable.newrow();
datarow[2] = guid.newguid();
datatable.rows.add(datarow);
}
//console.writeline(stopwatch.elapsedmilliseconds);//初始化数据时间
sqlbulkcopy sqlbulkcopy = new sqlbulkcopy(sqlhelper.sqlconnection);
sqlbulkcopy.destinationtablename = "passport";
if (datatable != null && datatable.rows.count != 0)
{
sqlbulkcopy.writetoserver(datatable);
}
sqlbulkcopy.close();
stopwatch.stop();
return stopwatch.elapsedmilliseconds;
}
private static datatable gettableschema()
{
return sqlhelper.executedataset(sqlhelper.sqlconnection, commandtype.text, "select * from passport where 1=2").tables[0];
}
}
}
转自cnblogs的文章 sql批量插入数据几种方案的性能详细对比
于是乎,下demo,测试,改成自己一般使用的方法测试,nnd,还真可以说是极速。
在此贴上我的demo:sqlbulkcopy.rar
复制代码 代码如下:
using system;
using system.diagnostics;
using system.data;
using system.data.sqlclient;
using microsoft.applicationblocks.data;
namespace consoleappinserttest
{
class program
{
static int count = 1000000; //插入的条数
static void main(string[] args)
{
long sqlbulkcopyinsertruntime = sqlbulkcopyinsert();
console.writeline(string.format("使用sqlbulkcopy插入{1}条数据所用的时间是{0}毫秒", sqlbulkcopyinsertruntime, count));
long commoninsertruntime = commoninsert();
console.writeline(string.format("普通方式插入{1}条数据所用的时间是{0}毫秒", commoninsertruntime, count));
console.readkey();
}
/// <summary>
/// 使用普通插入数据
/// </summary>
/// <returns></returns>
private static long commoninsert()
{
stopwatch stopwatch = new stopwatch();
stopwatch.start();
for (int i = 0; i < count; i++)
{
sqlhelper.executenonquery(sqlhelper.sqlconnection, commandtype.text, "insert into passport(passportkey) values('" + guid.newguid() + "')");
}
stopwatch.stop();
return stopwatch.elapsedmilliseconds;
}
/// <summary>
/// 使用sqlbulkcopy方式插入数据
/// </summary>
/// <returns></returns>
private static long sqlbulkcopyinsert()
{
stopwatch stopwatch = new stopwatch();
stopwatch.start();
datatable datatable = gettableschema();
for (int i = 0; i < count; i++)
{
datarow datarow = datatable.newrow();
datarow[2] = guid.newguid();
datatable.rows.add(datarow);
}
//console.writeline(stopwatch.elapsedmilliseconds);//初始化数据时间
sqlbulkcopy sqlbulkcopy = new sqlbulkcopy(sqlhelper.sqlconnection);
sqlbulkcopy.destinationtablename = "passport";
if (datatable != null && datatable.rows.count != 0)
{
sqlbulkcopy.writetoserver(datatable);
}
sqlbulkcopy.close();
stopwatch.stop();
return stopwatch.elapsedmilliseconds;
}
private static datatable gettableschema()
{
return sqlhelper.executedataset(sqlhelper.sqlconnection, commandtype.text, "select * from passport where 1=2").tables[0];
}
}
}
转自cnblogs的文章 sql批量插入数据几种方案的性能详细对比
推荐阅读
-
asp.net 使用SqlBulkCopy极速插入数据到 SQL Server
-
本地数据库(sql server)插入一条新数据时,同步到服务器数据库
-
在.NET Core类库中使用EF Core迁移数据库到SQL Server的方法
-
把XML数据插入到SQL Server数据库的表中
-
使用IBM Data Movement Tool从SQL Server/Oracle到DB2的表数据迁
-
asp.net 使用SqlBulkCopy极速插入数据到 SQL Server
-
本地数据库(sql server)插入一条新数据时,同步到服务器数据库
-
asp.net 使用SqlBulkCopy极速插入数据到 SQL Server
-
把XML数据插入到SQL Server数据库的表中
-
在.NET Core类库中使用EF Core迁移数据库到SQL Server的方法