admin

批量插入后特殊字符显示不正确

sql

BULK INSERT用来导入CSV文件。CSV文件中的一列包含一些包含分数的值(例如1m陆f)。

我不需要对分数进行任何数学运算,因为这些值仅用于显示目的,因此我将列设置为nvarchar。是BULK INSERT可行的,但是当我查看SQL中的记录时,分数已用美分()代替,因此显示的文本是1m垄f

我有兴趣了解为什么会发生这种情况,以及对如何解决此问题的任何想法。该BULK INSERT命令是:

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

阅读 190

收藏
2021-05-10

共1个答案

admin

您需要BULK INSERT使用CODEPAGE = 'ACP',它将字符串数据从Windows代码页1252转换为SQL Server代码页。

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

如果要在足够新版本的SQL Server上引入UTF-8数据,请执行以下操作:

[...] , CODEPAGE = '65001');

您可能还需要指定DATAFILETYPE = 'char|native|widechar|widenative'

2021-05-10