2012-12-21 95 views
21

我正在使用BULK INSERT導入CSV文件。 CSV文件中的一列包含一些包含分數的值(例如1m½f)。BULK INSERT後特殊字符顯示不正確

我並不需要做對分數的任何數學運算,因爲值將只是用於顯示目的,所以我已經設置了列nvarcharBULK INSERT的作品,但是當我在SQL中查看記錄時,分數已被分號代替(¢),所以顯示的文本是1m¢f

我有興趣瞭解爲什麼會發生這種情況以及關於如何解決問題的任何想法。該BULK INSERT命令是:

BULK INSERT dbo.temp FROM 'C:\Temp\file.csv' 
WITH (FIELDTERMINATOR = ',', ROWTERMINATOR = '\n'); 
+0

數據字面上是否包含一半字符? – Melanie

+0

是的,它包含1/2字符而不是1/2。 – MrMatt

+0

@AaronBertrand,大容量插入是: 'code' BULK INSERT dbo.temp FROM 'C:\ TEMP \ FILE.CSV' WITH(FIELDTERMINATOR = '',ROWTERMINATOR = '\ n'); \t 整理內容爲Latin1_General_CI_AS。 如何檢查文件是否標記爲Unicode? – MrMatt

回答

39

您使用CODEPAGE = 'ACP',用於從Windows代碼頁轉換字符串數據到SQL Server的代碼頁需要BULK INSERT

BULK INSERT dbo.temp FROM 'C:\Temp\file.csv' 
WITH (FIELDTERMINATOR = ',', ROWTERMINATOR = '\n', CODEPAGE = 'ACP'); 
+0

謝謝,這個作品。 – MrMatt

+0

這也是我需要正確地批量插入帶有重音字符(如è)的ansii文本。 – monty