Службы SSIS выводят строку Юникода в виде символьного кода Shift-JIS в текстовый файл
Шаблоны, приводящие к ошибкам
Предположим, что столбец типа nvarchar в таблице sql Server содержит строку, которую нельзя использовать в Shift-JIS. Кстати, если поместить эти символы в столбец varchar, то есть символы, которые нельзя использовать, например, столбец «ColumnShiftJis» справа. Замените его.
В службах SSIS поток настраивается на чтение данных из предыдущей таблицы, как показано на рисунке, и вывод их в текстовый файл.
Предположим, что вы хотите вывести его в виде CSV-файла. Поскольку Shift-JIS часто используется в CSV-файлах, установите кодировку символов текстового файла в Shift-JIS.
При выполнении с этим параметром на момент вывода произойдет ошибка.
Появляется сообщение об ошибке, подобное приведенному ниже:
Выходной файл также будет прерван на полпути, когда произошла ошибка.
Если вы попытаетесь вывести данные так, как есть, это будет ошибка, поэтому попробуйте включить «преобразование данных» в середину.
Преобразуйте тип данных из "DT_WSTR" в "DT_STR" и превратите его в форму, которая может быть выведена в Shift-JIS.
Однако, если вы также выполните это, вы получите ошибку. Это связано с тем, что службы SSIS строго не выполняют неявную обработку, что приводит к отсутствию данных. Если требуется, чтобы службы SSIS выполняли детипизированную обработку текста, необходимо явно указать подстановку символов для всех символов.
Обходные пути
Существует способ изменить тип текста с помощью SQL при чтении из таблицы в базе данных. Если это SQL, то его запускает ядро SQL Server, а не службы SSIS, поэтому он может работать без ошибок. Кстати, все символы, которые нельзя использовать в Shift-JIS, это "?" Конвертировано в: Это спецификация на стороне SQL Server. Даже если это не службы SSIS, результат аналогичен для всех систем, использующих SQL Server.
Откройте ADO NET Translator и измените режим доступа к данным на SQL Command. Теперь, когда можно ввести SQL, напишите инструкцию Select для извлечения данных из базы данных. Текст, содержащий символы, которые не могут быть использованы в Shift-JIS, принудительно преобразуется в varchar с помощью cast.
Поскольку символы, которые нельзя использовать в Shift-JIS, уже были удалены во время передачи данных в службы SSIS, обработка может быть передана как есть.
Вы можете видеть, что текст успешно записан в CSV. Кроме того, все символы, которые не могут быть использованы в Shift-JIS, являются "?" Вы можете видеть, что он был преобразован в: