透過 SSIS 封裝進行 CSV 匯入 MS SQL 資料型態轉換

SSIS CSV 匯入 MS SQL 資料型態轉換錯誤:資料行 "XXX" " XXX" 無法在 Unicode 和非 Unicode 字串資料類型之間轉換;Cannot convert between Unicode and Non Unicode string data type

使用 SSIS 想將 CSV 檔案匯入至 SQL DB Table 中,Table 已定義好了資料型態,在匯入字串欄位的時候出現此訊息:資料行 "XXX" " XXX" 無法在 Unicode 和非 Unicode 字串資料類型之間轉換。導致資料無法匯入成功,試了兩種作法可解決此問題:       

I tried to import data from .CSV file to MS SQL DB Table by SSIS, the error message shows "Cannot convert between Unicode and Non Unicode string data type" , there are two solutions below:

 

方法1:從 [連接管理員] 轉換資料型態

Solution 1:Convert string data type to Unicode string by [Connections]

  1. 找到連接 CSV 檔案來源的 [連接管理員] 開啟,不確定名稱的話可以點開 [一般檔案來源] 查看:
  2. 開啟 [連接管理員] ,選取 [進階] ,點選要調整資料型態的資料行,將 [DataType] 調整為 [Unicode字串] ,資料欄位長度也可一併作調整,記得調整比 DB Table 小或一樣,不然會出現資料被截斷錯誤:
  3. 因 [連接管理員] 資料欄位有修改,[一般檔案來源] 會要求更新資料行,點開按 [是] 即可

方法2:新增 [資料轉換] 元件轉換資料型態

Solution 2:Convert string data type to Unicode string by adding [Data Convertion] between data source(Flat File Source) and destination(OLE DB Destination)

  1. 在 [一般檔案來源] 及 [OLE DB 目的地] 中加入一個 [資料轉換]

  2. 點兩下開啟 [資料轉換編輯器] ,勾選需要調整的資料行,將資料型態調整為 [Unicode字串],資料欄位長度也可一併作調整,記得調整比 DB Table 小或一樣,不然會出現資料被截斷錯誤:

  3. 因資料行被 [資料轉換] 修改為新資料行名稱(預設為"原資料行名稱 + 的副本"),在 [OLE DB 目的地] 的欄位對應的來源部份要調整為新資料行: