Мне нужна возможность bulk insert
в экземпляре SQL Server 2016 (свойства 13.0.4224.16 - FORMAT
и FIELDQUOTE
недоступны) для специальных символов в качестве разделителя полей, а также для включения любых символов Unicode, которыеможет быть в наборах данных.Я пытаюсь использовать ¿
(Hex 0xBF) или любой другой символ, который, как мне известно, отсутствует в моем наборе данных в качестве разделителя полей.
У меня есть UTF-8
кодированный test.txt
файл, содержащий некоторый тестданные (заголовки исключены из набора данных):
foo¿bar¿foobar¿
\n < last line
и оператор TSQL для вставки:
BULK INSERT [dbo].[testTable]
FROM 'C:\Datasource\test.txt'
WITH (KEEPNULLS,
MAXERRORS=0,
FIELDTERMINATOR='0xBF');
в эту таблицу:
create table [dbo].[testTable](
col1 nvarchar(50),
col2 nvarchar(50),
col3 nvarchar(50),
col4 nvarchar(50)
)
при запускеselect
на моем testTable
он возвращает:
col1 col2 col3 col4
foo┬ bar┬ foobar┬ NULL
Почему появляются эти ┬
символы?Я предполагаю, что это мои разделители неправильно закодированы и включены в данные?Если я изменю свои разделители на |
, я могу получить данные без проблем, но они существуют в моих наборах данных и будут нарушать вставки в дальнейшем.Я попытался добавить CODEPAGE=65001
, который импортирует символы Юникода без проблем с использованием разделителя канала, но использование разделителя специальных символов приводит к этой ошибке:
Массовая загрузка: в данных обнаружен неожиданный конец файлафайл.
Редактировать: Я изменил файл импорта txt
на кодировку UTF-16
, но все еще сталкиваюсь с теми же проблемами.