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