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

SQL 技術 達人科技 2017-06-14

在使用SQL Server導入導出嚮導導入數據的時候,我們經常會碰到某個單元格的數據超長而被截斷報錯的情況。本文針對這種場景給出相應的解決方案。

環境描述:SQL Server 2012,文件源:文本文件(UTF-8編碼)

問題描述:如下圖所示,由於SQL Server 對字符長度的限制,當我們選擇Unicode 字符串(DT_WSTR)時,最長的長隊為4000。這個DataType對應著數據庫中的nvarchar。這時如果文本文件中的列過長就會報出截斷錯誤。

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

但其實SQL Server中是有nvarchar(MAX)這個類型的,理論上可以裝載2G的數據,所以即使是列的字符超長也是可以承載的。

解決方案如下:

1. 選擇數據類型 : 文本流[DT_TEXT](該數據類型對應著數據庫中的varchar(MAX),這裡不能直接選擇 “Unicode 文本流 [DT_NTEXT]”,因為當文件是UTF-8編碼時會報出編碼錯誤(報錯信息:ANSI 文件不支持此數據類型。請改用 DT_TEXT))

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

2. 點擊編輯映射,將varchar改成nvarchar。

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

導入之後可以看到,Column3是nvarchar(MAX)類型的數據。

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

需要注意的是,這種做法其實是將原有的數據導入中間加了一層Data Convertion,所以效率上會有一定的損失。

相關推薦

推薦中...