2012-12-21 57 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