SQL Server使用導入導出向導導入超過4000個字符的字段的數據


在使用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,所以效率上會有一定的損失。

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM