• 数据库一次性插入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
  • 相关阅读:
    几个数之和----数组刷题
    单调栈刷题
    腾讯金融科技凉经
    mysql刷题
    链表类题目常用方法
    阿里云一面凉经
    腾讯TEG一面凉经
    腾讯软件开发-后台开发实习生-一面凉经
    剑指 Offer 19. 正则表达式匹配
    剑指 Offer 20. 表示数值的字符串
  • 原文地址:https://www.cnblogs.com/aspnetjia/p/5136999.html
Copyright © 2020-2023  润新知