在使用SQL Server導入導出嚮導導入數據的時候,我們經常會碰到某個單元格的數據超長而被截斷報錯的情況。本文針對這種場景給出相應的解決方案。
環境描述:SQL Server 2012,文件源:文本文件(UTF-8編碼)
問題描述:如下圖所示,由於SQL Server 對字符長度的限制,當我們選擇Unicode 字符串(DT_WSTR)時,最長的長隊為4000。這個DataType對應著數據庫中的nvarchar。這時如果文本文件中的列過長就會報出截斷錯誤。
但其實SQL Server中是有nvarchar(MAX)這個類型的,理論上可以裝載2G的數據,所以即使是列的字符超長也是可以承載的。
解決方案如下:
1. 選擇數據類型 : 文本流[DT_TEXT](該數據類型對應著數據庫中的varchar(MAX),這裡不能直接選擇 “Unicode 文本流 [DT_NTEXT]”,因為當文件是UTF-8編碼時會報出編碼錯誤(報錯信息:ANSI 文件不支持此數據類型。請改用 DT_TEXT))
2. 點擊編輯映射,將varchar改成nvarchar。
導入之後可以看到,Column3是nvarchar(MAX)類型的數據。
需要注意的是,這種做法其實是將原有的數據導入中間加了一層Data Convertion,所以效率上會有一定的損失。
相關推薦
推薦中...