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
posted @ 2018-12-21 09:42  爱与和平  阅读(852)  评论(0编辑  收藏  举报