2013-11-21 38 views
0

作爲一個SQL初學者,我試圖從Excel導入數據到sql server中的表中。我使用sql導入嚮導導入數據。由於嚮導總是將一些數字列默認爲nvarchar,並且不允許我在映射中更改它,因此我計劃將數據導入臨時表,然後使用INSERT和CAST函數將數據傳輸到永久目標表中。 但是,在執行插入操作時,出現'將數據類型nvarchar轉換爲數字的錯誤'。任何人都可以告訴我爲什麼以及如何解決這個問題?這裏是我的代碼:將excel文件導入sql server時轉換數據類型時出錯

INSERT INTO [DatabaseA].[dbo].[mstr_Project] 
    ([Project_Start_Year] 
    ,[Project_Name] 
    ,[Client_Name] 
    ,[Client_Revenue_in_Millions] 
    ,[Client_Employee_Number]) 
SELECT [ProjectStartYear] 
    ,[ProjectName] 
    ,[ClientName] 
    ,CAST([ClientRevenuesInMillions] AS NUMERIC) 
    ,CAST([EmployeeNo] AS NUMERIC) 
FROM [dbo].[temp_ProjectImport] 

非常感謝!

+0

看着你的Excel文件,其中ClientRevenuesInMillions(或任何被失敗的其他列)包含字母字符的所有實例。錯誤告訴你到底發生了什麼錯誤,在這些列中有些值不能轉換成數字。 –

+0

我有問題的數字列都是空的,沒有值。我想這就是爲什麼Excel認爲他們是基於列標題的nvarchar。我如何讓Excel認爲它們實際上是數字的,但現在沒有價值? – user3016270

回答

0

你能做到這一點convert(nvarchar(255), @col)

INSERT INTO [DatabaseA].[dbo].[mstr_Project] 
     ([Project_Start_Year] 
     ,[Project_Name] 
     ,[Client_Name] 
     ,[Client_Revenue_in_Millions] 
     ,[Client_Employee_Number]) 
    SELECT [ProjectStartYear] 
     ,[ProjectName] 
     ,[ClientName] 
     ,CAST([ClientRevenuesInMillions] AS NUMERIC) 
     ,CONVERT(NVARCHAR(255),[EmployeeNo]) as new_converted_value 
    FROM [dbo].[temp_ProjectImport] 
相關問題