SqlBulkCopy的幾點注意事項

原文:http://blog.163.com/xiong1000@126/blog/static/218930920107240184853/


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();//關閉

        }


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章