Подтвердить что ты не робот

Специальные символы, отображаемые неправильно после BULK INSERT

Я использую BULK INSERT для импорта CSV файла. Один из столбцов в файле CSV содержит некоторые значения, содержащие фракции (например, 1m½f).

Мне не нужно выполнять какие-либо математические операции над фракциями, так как значения будут использоваться только для целей отображения, поэтому я установил столбец как nvarchar. BULK INSERT работает, но когда я просматриваю записи в SQL, фракция была заменена символом cent (¢), поэтому отображаемый текст 1m¢f.

Мне интересно понять, почему это происходит, и какие-либо мысли о том, как решить проблему. Команда BULK INSERT:

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

Ответ 1

Вам нужно BULK INSERT использовать CODEPAGE = 'ACP', который преобразует строковые данные из кодовой страницы Windows в кодовую страницу SQL Server.

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