• sql server 大批数据插入时,时间过长的问题


     private const string con = "server=192.168.30.36;database=test;user=sa;pwd=123456";
            static void Main(string[] args)
            {
                DataTable dt = new DataTable();
                dt.Columns.Add("id");
                dt.Columns.Add("Name");
                dt.Columns.Add("index1");
                for (int i = 10000; i < 100000; i++)
                {
                    DataRow dr = dt.NewRow();
                    dr[1] = "测试"+i;
                    dr[2] = i;
                    dt.Rows.Add(dr);
                }
                batchAdd(dt, "wx");
                string[] arr={};
            }
            public static void batchAdd(DataTable dt,string tableName)
            {
                using (SqlBulkCopy sbc =new SqlBulkCopy(con))
                {
                    sbc.BulkCopyTimeout = 10000;
                    sbc.BatchSize = 9000;
                    sbc.DestinationTableName = tableName;
                    for (int i = 0; i < dt.Columns.Count; i++)
                    {
                        sbc.ColumnMappings.Add(dt.Columns[i].ColumnName,i);
                    }
                    sbc.WriteToServer(dt);
                }
            }
    

      

    SqlBulkCopy 这是在system.data下的一个类库, 用于大批量数据插入。  
    经过测试 插入10000条的数据大概是1s; 一百万的数据大概在4-5s;

                              end
  • 相关阅读:
    分苹果
    马拉车算法(求最长回文子串)
    KMP
    字典树
    关于子类和父类中的this的用法
    最长上生子序列LIS
    sass
    黑马程序员----java基础笔记下(毕向东)
    DOM
    ajax教程
  • 原文地址:https://www.cnblogs.com/LoveAndPeace/p/10153897.html
Copyright © 2020-2023  润新知