• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase
您的位置:首页 > 数据库 >Mysql > asp.net 使用SqlBulkCopy极速插入数据到 SQL Server

asp.net 使用SqlBulkCopy极速插入数据到 SQL Server

作者:匿名 字体:[增加 减小] 来源:互联网 时间:2018-12-05

匿名通过本文主要向大家介绍了asp.net,SqlBulkCopy等相关知识,希望本文的分享对您有所帮助

今天早上reader 上收到cnblogs的订阅里看到一个关于SQL语句快速插入的文章,提到SqlBulkCopy,感觉不错,按他的测试SqlBulkCopy要比普通插入快近30倍,

按这个来算,我们那个发水票的时间就会由 10分钟-->20秒,这可太神奇了。
于是乎,下demo,测试,改成自己一般使用的方法测试,NND,还真可以说是极速。
在此贴上我的Demo:
代码如下:
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();
}
///
/// 使用普通插入数据
///

///
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;
}
///
/// 使用SqlBulkCopy方式插入数据
///

///
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的文章
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • asp.net 将图片上传到mysql数据库的方法
  • asp.net 将图片上传到mysql数据库的方法
  • asp.net 使用SqlBulkCopy极速插入数据到 SQL Server
  • 【ASP.NET Web API教程】1.1 第一个ASP.NET Web API

相关文章

  • 2018-12-05如何把ACCESS的数据导入到Mysql中
  • 2017-05-11mysql问题之slow log中出现大量的binlog dump记录的解决方法
  • 2018-12-05SQL Server CROSS APPLY和OUTER APPLY的应用详解
  • 2017-05-11mysql中TINYINT的取值范围
  • 2018-12-05关于mysql优化之IN换INNER JOIN的实例分享
  • 2018-12-05Ubuntu与windows双系统下共用MySQL数据库的方法
  • 2018-12-05SQLServer2005重建索引前后对比分析
  • 2018-12-05mysql分区之range分区的详细介绍
  • 2017-05-11MYSQL代码 定期备份Mysql数据库
  • 2018-12-05sqlserver 索引的一些总结

文章分类

  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase

最近更新的内容

    • 21条最佳MySQL性能优化
    • Oracle Max函数使用中出现的问题
    • 关于字段最大值的4篇文章推荐
    • MySQL:reading initial communication packet问题解决方法之一
    • 不能够连接到主机(名称为localhost)上的MySQL服务”
    • 详细介绍mysql5.7.17安装使用教程(图文)
    • 详解Mac系统下源码编译安装MySQL 5.7.17的教程
    • ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction
    • 如何理解MySQL中的数据类型概念?
    • MySQL 使用 SSL 连接配置详解

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有