asp.net 使用SqlBulkCopy极速插入数据到 SQL Server
2022-11-12 09:55:19
内容摘要
这篇文章主要为大家详细介绍了asp.net 使用SqlBulkCopy极速插入数据到 SQL Server,具有一定的参考价值,可以用来参考一下。
对此感兴趣的朋友,看看idc笔记做的技术笔记!按这个
文章正文
这篇文章主要为大家详细介绍了asp.net 使用SqlBulkCopy极速插入数据到 SQL Server,具有一定的参考价值,可以用来参考一下。
对此感兴趣的朋友,看看idc笔记做的技术笔记!
按这个来算,我们那个发水票的时间就会由 10分钟-->20秒,这可太神奇了。于是乎,下demo,测试,改成自己一般使用的方法测试,NND,还真可以说是极速。在此贴上我的Demo:SqlBulkCopy.rar代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 | <code> 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]; } } } </code> |
注:关于asp.net 使用SqlBulkCopy极速插入数据到 SQL Server的内容就先介绍到这里,更多相关文章的可以留意
代码注释