SqlBulkCopy的幾點注意事項
阿新 • • 發佈:2019-02-04
SqlBulkCopy 非常好用這一點毋庸置疑,效率肯定是比INSERT ...SELECT 要高個幾倍。
不過剛開始我遇到很多問題。
會報執行時異常:“給定的 ColumnMapping 與源或目標中的任意列均不匹配”的處理方法
是因為在這裡大小寫是完全限定的包括表名和Columnname全部是嚴格大小寫
源列“kl_zj”的區域設定 ID“1033”和目標列“kl_zj”的區域設定 ID“2052”不匹配。
是因為 你修改該表的時候有一個“排序規範”必須保持源定義和目標保持一致
例子如下
string connectionString = txtString.Text; string strSQL = "select hth,khmc,khdm,kl_zj,sj_zj,ywy,bm,htlx,qdrq,ywgs from gghtb"; using (SqlConnection sourceConnection = new SqlConnection(connectionString)) { //源地址 SqlCommand myCommand = new SqlCommand(strSQL,sourceConnection); sourceConnection.Open(); SqlDataReader reader = myCommand.ExecuteReader(); //目的 using (SqlConnection destinationConnection = new SqlConnection(ConfigurationManager.ConnectionStrings["SBSCRMConnectionString"].ConnectionString)) { destinationConnection.Open(); using (SqlBulkCopy bulkCopy = new SqlBulkCopy(destinationConnection.ConnectionString)) { bulkCopy.BatchSize = 500; bulkCopy.DestinationTableName = "History_gghtb"; bulkCopy.WriteToServer(reader); } } reader.Close();//關閉 }