zoukankan      html  css  js  c++  java
  • 数据库一次性插入10w条数据,怎么插入效率快

      1. 在SQL Server 中插入一条数据使用Insert语句,但是如果想要批量插入一堆数据的话,循环使用Insert不仅效率低,而且会导致SQL一系统性能问题

      2.  下面介绍SQL Server支持的两种批量数据插入方法:Bulk和表值参数(Table-Valued Parameters)。

      3. bulk方法主要思想是通过在客户端把数据都缓存在Table中,然后利用SqlBulkCopy一次性把Table中的数据插入到数据库

      4. 代码如下:

      5. public static void BulkToDB(DataTable dt) 

        SqlConnection sqlConn = new SqlConnection( 
        ConfigurationManager.ConnectionStrings["ConnStr"].ConnectionString); 
        SqlBulkCopy bulkCopy = new SqlBulkCopy(sqlConn); 
        bulkCopy.DestinationTableName = "BulkTestTable"; 
        bulkCopy.BatchSize = dt.Rows.Count; 
        try 

        sqlConn.Open(); 
            if (dt != null && dt.Rows.Count != 0) 
            bulkCopy.WriteToServer(dt); 

        catch (Exception ex) 

        throw ex; 

        finally 

        sqlConn.Close(); 
        if (bulkCopy != null) 
        bulkCopy.Close(); 


        public static DataTable GetTableSchema() 

        DataTable dt = new DataTable(); 
        dt.Columns.AddRange(new DataColumn[]{ 
        new DataColumn("Id",typeof(int)), 
        new DataColumn("UserName",typeof(string)), 
            new DataColumn("Pwd",typeof(string))}); 

        return dt; 

        static void Main(string[] args) 

        Stopwatch sw = new Stopwatch(); 
        for (int multiply = 0; multiply < 10; multiply++) 

        DataTable dt = Bulk.GetTableSchema(); 
        for (int count = multiply * 100000; count < (multiply + 1) * 100000; count++) 

        DataRow r = dt.NewRow(); 
        r[0] = count; 
        r[1] = string.Format("User-{0}", count * multiply); 
        r[2] = string.Format("Pwd-{0}", count * multiply); 
        dt.Rows.Add(r); 

        sw.Start(); 
        Bulk.BulkToDB(dt); 
        sw.Stop(); 
        Console.WriteLine(string.Format("Elapsed Time is {0} Milliseconds", sw.ElapsedMilliseconds)); 

        Console.ReadLine(); 
        }

      6. 转载自:http://www.aspnetjia.com/Cont-133.html
  • 相关阅读:
    jQuery事件
    php学习注意事项
    取消php上传2M的限制(windows服务器)
    PHP编程值得注意的细节
    jQuery load()方法特殊用法!
    PHP显示乱码和apache内部编码问题的解决
    定制Apache索引样式
    这么长时间也没有人看看我
    加载php5apache2_2.dll失败的处理方法
    WinXP下的ApachePHPMySQL安装和配置
  • 原文地址:https://www.cnblogs.com/aspnetjia/p/5136999.html
Copyright © 2011-2022 走看看