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 і змініть режим доступу до даних на команду SQL. Тепер, коли ви можете ввести SQL, напишіть оператор Select, щоб отримати дані з бази даних. Текст, який містить символи, які не можна використовувати в Shift-JIS, примусово перетворюється на varchar за допомогою cast.

SQL で varchar に変換

Оскільки символи, які не можуть бути використані в Shift-JIS, вже були видалені під час потоку даних до SSIS, обробка може передаватися такою, якою вона є.

処理成功

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

出力されたテキスト