2014-01-20 115 views
1

將file.csv導入到sql server 2008時出現問題。將數據類型DECIMAL從CSV導入到SQL服務器

在我的file.csv中,小數點是這樣寫的:(例如1234,34112)和SQL服務器似乎並不瞭解','是十進制的。

我的解決方案是使用BULK INSERT作爲VARCHAR導入它,然後將其轉換爲十進制。它的作品,但我想這可能是一個更好的解決方案,我無法得到。

你能幫我解決嗎?

在此先感謝

+0

沒有足夠的信心回答,但也許BCP與-R開關,這將適用於您的區域設置。 BCP:http://technet.microsoft.com/en-us/library/ms162802.aspx –

+1

個人而言,我幾乎總是將數據加載到字符登臺表中,然後在數據庫中執行轉換。我發現它使調試變得更容易,並且通常可以加快數據傳輸的進程。所以,你的方法很好。 –

回答

0

有做一個你已經提到在導入SQL Server,然後做這樣的事情的方式只有兩種..

CREATE Table ImportTable (Value NVARCHAR(1000)) --<-- Import the data as it is 
INSERT INTO @TABLE VALUES 
('1234,34112'),('12651635,68466'),('1234574,5874') 

    /* Alter table add column of NUMERIC type. 
    And update that column something like this... 
    */ 

UPDATE ImportTable 
SET NewColumn = CAST(REPLACE(Value , ',', '.') AS NUMERIC(28,8)) 

或者,你可以改變它的Excel在導入之前

除非您使用SSIS導入數據,否則最好在Sql Server 1st中使用丟失數據類型獲取數據,然後根據需要執行任何數據操作。

+0

謝謝你的回答。 :) – yke

+0

不是一個問題,很高興它幫助你可以接受答案:) –

相關問題