1. 程式人生 > >將Excel資料匯入到SqlServer及匯入時資料型別轉換失敗解決方案

將Excel資料匯入到SqlServer及匯入時資料型別轉換失敗解決方案

將資料匯入到SqlServer是很常用的一個功能,而Excel資料來源又是資料匯入功能的常用資料來源,在使用時遇到一些問題,記錄下來防止大家走彎路。

UserInfo表結構以及Excel資料截圖

UserInfo表結構:
表結構
Excel資料:
這裡寫圖片描述

SqlServer匯入資料

1、右擊資料庫->任務->匯入資料->下一步
這裡寫圖片描述
2、設定資料來源為Microsoft Excel->選擇檔案路徑->下一步
這裡寫圖片描述
3、身份驗證->選擇目標資料庫->下一步
這裡寫圖片描述
4、選擇第一項->下一步
這裡寫圖片描述
5、選擇源資料和目標->下一步
這裡寫圖片描述
6、匯入結果
如果源資料與目標表所需資料的格式相匹配,那即可成功匯入。
但往往會有資料不匹配的情況,例如:
這裡寫圖片描述

資料轉換失敗解決方案

1、Double無法轉換為nvarchar
UserInfo表中的UserName列是nvarchar(20)型別,而Excel表中UserName列的資料是111、222、333,因此被識別為double型別
解決方案:
選中UserName列的資料->資料->分列->下一步->下一步->選擇“文字”->完成,再匯入時UserName列格式就能匹配上了。
這裡寫圖片描述
這裡寫圖片描述

2、Double無法轉換為int
UserInfo表中的UserId列是int型別,而Excel表中UserId列的資料2016010、2016011、2016012被識別為double型別
解決方案:
1)匯入資料在選擇源表和源檢視時,不要選擇表,那會在資料庫中建立一個跟源資料同名的表。
這裡寫圖片描述


這裡寫圖片描述
2)把dbo.Sheet1$表中UserId列的資料型別修改為int型

alter table dbo.Sheet1$
alter column UserId int null

3)把dbo.Sheet1$表中的資料追加到dbo.UserInfo表中
右擊資料庫->任務->匯入資料->下一步,
設定資料來源為SQLServer Native Client 10.0->輸入伺服器名稱->身份驗證->選擇源資料庫->下一步,
設定目標為SQLServer Native Client 10.0->輸入伺服器名稱->身份驗證->選擇目標資料庫->下一步,
選擇第一項->下一步,
選擇源資料和目標->下一步(源中列出的是源資料中的表,目標中列出的是目標資料庫中的表),
這裡寫圖片描述


最後一步,追加成功。
這裡寫圖片描述

我知道Double轉int的解決方案有點麻煩,如果大家有好的方法的話請留言慷慨分享一下,謝謝了。