zoukankan      html  css  js  c++  java
  • 使用SqlBulkCopy类批量复制大数据

     1 using System;
     2 using System.Configuration;
     3 using System.Data;
     4 using System.Data.SqlClient;
     5 using System.Diagnostics;
     6 
     7 namespace SqlBulkCopy1
     8 {
     9     class Program
    10     {
    11         static void Main(string[] args)
    12         {
    13             Stopwatch sw = new Stopwatch();
    14             for (int multiply = 0; multiply < 10; multiply++)
    15             {
    16                 DataTable dt = GetTableSchema();
    17                 for (int count = multiply * 100000; count < (multiply + 1) * 100000; count++)
    18                 {
    19                     DataRow r = dt.NewRow();
    20                     r[0] = count;
    21                     r[1] = string.Format("username-{0}", count * multiply);
    22                     r[2] = string.Format("userpwd-{0}", count * multiply);
    23                     r[3] = string.Format("address-{0}", count * multiply);
    24                     dt.Rows.Add(r);
    25                 }
    26                 sw.Start();
    27                 BulkToDB(dt);
    28                 sw.Stop();
    29                 Console.WriteLine(string.Format("已消耗时间{0}毫秒", sw.ElapsedMilliseconds)); 
    30             }
    31             Console.ReadLine(); 
    32         }
    33         public static void BulkToDB(DataTable dt)
    34         { 
    35             SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["SqlConnString"].ConnectionString);
    36             SqlBulkCopy bulkCopy = new SqlBulkCopy(con);
    37             bulkCopy.DestinationTableName = "USERINFO";
    38             bulkCopy.BatchSize = dt.Rows.Count;
    39             try
    40             {
    41                 con.Open();
    42                 if (dt != null && dt.Rows.Count != 0)
    43                     bulkCopy.WriteToServer(dt);
    44             }
    45             catch (Exception)
    46             {
    47                 
    48                 throw;
    49             }
    50         }
    51 
    52         public static DataTable GetTableSchema()
    53         {
    54             DataTable dt = new DataTable();
    55             dt.Columns.AddRange(new DataColumn[] { 
    56             new DataColumn("id",typeof(int)),
    57             new DataColumn("username",typeof(string)),
    58             new DataColumn("userpwd",typeof(string)),
    59             new DataColumn("address",typeof(string))
    60             });
    61             return dt;
    62         }
    63     }
    64 }

    100W条数据消耗时间:

  • 相关阅读:
    Android Loader异步装载
    Android 清除本地缓存
    Android 小知识
    Android 百度地图用法
    ANDROID笔记:四大组件之广播
    Android扩展:一个自动findViewById的小工具
    ANDROID笔记:基于handle的异步请求网络数据的一种方法
    ANDROID笔记:多线程断点下载
    ANDROID笔记:AIDL介绍
    ANDROID笔记:activity通过ContentProvider传值(仿调用系统图片浏览器过程)
  • 原文地址:https://www.cnblogs.com/byvar/p/4931875.html
Copyright © 2011-2022 走看看