zoukankan      html  css  js  c++  java
  • 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];
    }
    }
    }

  • 相关阅读:
    C# 之泛型详解
    C#方法的六种参数,值参数、引用参数、输出参数、参数数组、命名参数、可选参数
    在C#中理解和实现策略模式的绝对入门教程
    负载均衡的原理
    C#多线程编程
    深入研究虚幻4反射系统实现原理(二)
    深入研究虚幻4反射系统实现原理(一)
    虚幻4属性系统(反射)翻译
    UE4中使用数据表(Data Table)
    UE4 自定义物理表面类型(Surface Type)
  • 原文地址:https://www.cnblogs.com/meigan/p/1992454.html
Copyright © 2011-2022 走看看