«UTF-8 с разделителем строк в стиле Unix» Я предполагаю, что вы используете версию SQL Server, которая не поддерживает UTF-8. От ОБЪЕМНАЯ ВСТАВКА (Transact-SQL)
** Важно ** Версии до SQL Server 2016 (13.x) не поддерживают кодовую страницу65001 (кодировка UTF-8).
Если вы используете 2016+, укажите кодовую страницу для UTF-8:
BULK INSERT #mycsv
FROM 'D:\TestData\Test.dat'
WITH (ROWTERMINATOR = '0x0A',
FIELDTERMINATOR = '|',
FIRSTROW = 1,
CODEPAGE = '65001',
ERRORFILE = 'D:\TestData\Import.log');
Есливы не используете SQL Server 2016+, тогда вы не можете использовать BULK INSERT
для импорта файла UTF-8 ;вам придется использовать другую кодовую страницу или другой инструмент.
Обратите также внимание, что в приведенном выше документе указано следующее:
Атрибут FIRSTROW не являетсяпредназначен для пропуска заголовков столбцов. Пропуск заголовков не поддерживается оператором BULK INSERT. При пропуске строк ядро СУБД SQL Server смотрит только на разделители полей и не проверяет данные в полях пропущенных строк.
если вы пропускаете строки, вам все равно нужно убедиться, чтострока действительна, но она не предназначена для пропуска заголовков. Это означает, что вы должны использовать FIRSTROW = 1
и исправлять строку заголовка, как указывает @sarlacii.
Конечно, это не решает проблему кодовой страницы, если вы используете более старую версию SQL Server;и я считаю, что вам придется использовать другую технологию в 2014 году и ранее.