天天看點

SqlBulkCopy 功能出現 string無法轉nvarchar問題,出現截斷

        對于批量資料導入而言,的确非常省時間。但有時遇到問題由于是批量導入的資料,是以錯誤也是無從查起。

最近遇到一個問題,導入時報資料被截斷,但由于資料量太大,肉眼也無法檢視問題所在。就試圖擴充各自段大小。

最後鎖定在了某字段,擴充到一定大小後,可以批量插入資料。

         故而想要反查已插入資料中到底哪個資料字段較長,很不幸,在資料庫中使用len函數檢視該字段資料,竟沒有比較長的。上網查了下可能原因也基本是說資料庫自段本來就不長,或者有單引号雲雲。

         後來懷疑是否SqlBulkCopy是否存在某種bug,故而在系統中改寫代碼,用單個sql的插入資料方式,用循環逐條導入。結果是沒問題。難道真的是SqlBulkCopy有某種bug?上網搜了一通,竟沒有一條說有什麼bug之類的。

         偶然一次發現,len函數取資料長度是去了尾部空格的。

         故而在代碼中對用于批量導入的資料,導入前進行一次周遊,将該字段中資料用TrimEnd()去尾部空格。結果批量導入成功了!

         但為何單條sql導入的時候沒問題?

         沒錯,單條sql導入的時候就是沒問題,它會直接把自段大小外的空字元串(注意,尾部多出來的都是空字元串才行)去掉,并将剩餘内容插入資料庫。 但是批量導入并不會有該機制,就直接會報截斷錯誤。