• asp.net 使用SqlBulkCopy极速插入数据到 SQL Server转一下说不定哪天用的到


    按这个来算,我们那个发水票的时间就会由 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> 一起jquery,17jquery
    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)

    17jquery.com


    {
    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];
    }
    }
    }

  • 相关阅读:
    Razor 视图
    可选参数和命名参数
    CPU性能分析工具原理
    从硬件到语言,详解C++的内存对齐(memory alignment)
    谈谈C++的volatile关键字以及常见的误解
    C++11的value category(值类别)以及move semantics(移动语义)
    C++基于范围循环(range-based for loop)的陷阱
    C++模板入门教程(一)——模板概念与基本语法
    自己动手实现深度学习框架-8 RNN文本分类和文本生成模型
    自己动手实现深度学习框架-7 RNN层--GRU, LSTM
  • 原文地址:https://www.cnblogs.com/meigan/p/1992454.html
Copyright © 2020-2023  润新知