1 #region 使用SqlBulkCopy将DataTable中的数据批量插入数据库中 2 /// <summary> 3 /// 使用SqlBulkCopy将DataTable中的数据批量插入数据库中 4 /// </summary> 5 /// <param name="strTableName">数据库中对应的表名</param> 6 /// <param name="dtData">数据集</param> 7 public static void SqlBulkCopyInsert(string strTableName, DataTable dtData,string connectionString) 8 { 9 string ConStr = connectionString;// 数据库连接字符串 10 11 try 12 { 13 using (SqlBulkCopy sqlRevdBulkCopy = new SqlBulkCopy(ConStr))//引用SqlBulkCopy 14 { 15 sqlRevdBulkCopy.DestinationTableName = strTableName;//数据库中对应的表名 16 sqlRevdBulkCopy.NotifyAfter = dtData.Rows.Count;//有几行数据 17 sqlRevdBulkCopy.WriteToServer(dtData);//数据导入数据库 18 sqlRevdBulkCopy.Close();//关闭连接 19 } 20 } 21 catch (Exception ex) 22 { 23 MessageBox.Show(ex.Message + "数据库处理行。SqlBulkCopyInsert"); 24 throw (ex); 25 } 26 } 27 #endregion
25万行数据只需要将近2秒时间。但是这个好像只是适用于SQL数据库,对于SDE是不好用的,暂时还不知为何?
2014-11-13 17:55:18更新,找到SDE修改的方法:
先用:TRUNCATE TABLE 表名,这条SQL语句清空数据表,保留原来的数据结构,然后在使用上面的批量插入数据。