1. 程式人生 > >sql server 大批資料插入時,時間過長的問題

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