После долгих попыток я обнаружил, что с SQL server 2017
(2016?) Загрузка CSV-файлов в кодировке UTF-8 через групповую вставку стала возможной благодаря использованию опций CODEPAGE = 65001
и DATAFILETYPE = 'Char'
, как объяснено в некоторых другихВопросы.
То, что не работает, делает то же самое при использовании файла формата XML.Я попробовал это, все еще используя опции CODEPAGE и DATAFILETYPE, а также с этими опущенными опциями.И я попробовал это с самым простым набором данных.Одна строка, один столбец, содержащий некоторый текст с символом UTF-8.
Это файл формата XML, который я использую.
<?xml version="1.0"?>
<BCPFORMAT xmlns="http://schemas.microsoft.com/sqlserver/2004/bulkload/format" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<RECORD>
<FIELD ID="STREET" xsi:type="NCharTerm" TERMINATOR="\r\n" MAX_LENGTH="1000" COLLATION="Latin1_General_CS_AS_WS"/>
</RECORD>
<ROW>
<COLUMN SOURCE="STREET" NAME="STREET" xsi:type="SQLNVARCHAR"/>
</ROW>
</BCPFORMAT>
Даже через исходные данные содержится только некоторый текст с1 специальный символ, конечный результат выглядит следующим образом: 慊潫ⵢ瑓晥慦瑓慲鿃㐱
При использовании xsi:type="CharTerm"
вместо xsi:type="NCharTerm"
результат выглядит следующим образом: ... -Straßs
...
Я что-то не так делаюили поддержка UTF-8 неправильно реализована для файлов формата XML?