Службы SSIS выводят строку Юникода в виде символьного кода Shift-JIS в текстовый файл

Дата создания страницы :

Шаблоны, приводящие к ошибкам

Предположим, что столбец типа nvarchar в таблице sql Server содержит строку, которую нельзя использовать в Shift-JIS. Кстати, если поместить эти символы в столбец varchar, то есть символы, которые нельзя использовать, например, столбец «ColumnShiftJis» справа. Замените его.

Unicode 文字をデータベースのテーブルに入れる

В службах SSIS поток настраивается на чтение данных из предыдущей таблицы, как показано на рисунке, и вывод их в текстовый файл.

テキストファイルへ出力する様にフローを構築

Предположим, что вы хотите вывести его в виде CSV-файла. Поскольку Shift-JIS часто используется в CSV-файлах, установите кодировку символов текстового файла в Shift-JIS.

文字コードを Shift-JIS に設定

При выполнении с этим параметром на момент вывода произойдет ошибка.

テキストファイル書き込み時にエラー

Появляется сообщение об ошибке, подобное приведенному ниже:

エラー内容

Выходной файл также будет прерван на полпути, когда произошла ошибка.

出力されたテキスト

Если вы попытаетесь вывести данные так, как есть, это будет ошибка, поэтому попробуйте включить «преобразование данных» в середину.

データ変換 追加

Преобразуйте тип данных из "DT_WSTR" в "DT_STR" и превратите его в форму, которая может быть выведена в Shift-JIS.

「DT_WSTR」から「DT_STR」に変換

Однако, если вы также выполните это, вы получите ошибку. Это связано с тем, что службы 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.

SQL で varchar に変換

Поскольку символы, которые нельзя использовать в Shift-JIS, уже были удалены во время передачи данных в службы SSIS, обработка может быть передана как есть.

処理成功

Вы можете видеть, что текст успешно записан в CSV. Кроме того, все символы, которые не могут быть использованы в Shift-JIS, являются "?" Вы можете видеть, что он был преобразован в:

出力されたテキスト