Вставить символ Юникода плюс-минус в SQL БД сервера (T SQL) - PullRequest
2 голосов
/ 05 августа 2020

У меня есть файл CSV в кодировке UTF8, и я хотел бы импортировать данные в SQL таблицу БД сервера. В некоторых ячейках я сохранил такие значения, как:

±40%;
16.5±10%;

Все столбцы загружаются отлично, но только столбцы с символом ± отображаются в БД:

введите описание изображения здесь

Все столбцы, в которых я хотел бы сохранить этот символ, я использую nvarchar (50) с сопоставлением Latin1_General_100_CS_AS_WS_SC_UTF8

Есть ли ждать, как этот символ сохранить в БД? Спасибо

ИЗМЕНИТЬ Я использую для загрузки CSV-файла это:

BULK INSERT [dbo].[x]
    FROM 'c:\Users\x\Downloads\x.csv'
    WITH
    (
    FIRSTROW = 2,
    FIELDTERMINATOR = ';',  --CSV field delimiter
    ROWTERMINATOR = '\n',   --Use to shift the control to next row
    ERRORFILE = 'c:\Users\x\Downloads\xx.csv',
    TABLOCK
    );

Я также пытаюсь изменить параметры SSMS:

‘Tools‘ -> ‘Options‘ -> ‘Environment‘ -> ‘Fonts and Colors‘ -> Select ‘Grid Results’

Установить шрифт на Arial, но без положительных результатов

У меня более 20 миллионов записей во многих файлах, которые я хочу импортировать

1 Ответ

1 голос
/ 05 августа 2020

Пробовали ли вы добавить CODEPAGE=65001 (UTF-8) в предложение WITH оператора BULK INSERT?

BULK INSERT [dbo].[x]
FROM 'c:\Users\x\Downloads\x.csv'
WITH
(
    FIRSTROW = 2,
    FIELDTERMINATOR = ';',  --CSV field delimiter
    ROWTERMINATOR = '\n',   --Use to shift the control to next row
    ERRORFILE = 'c:\Users\x\Downloads\xx.csv',
    CODEPAGE = 65001,
    TABLOCK
);
...