SSIS wyprowadza ciąg Unicode jako kod znaku Shift-JIS do pliku tekstowego

Data utworzenia strony :

Wzorce powodujące błędy

Załóżmy, że kolumna typu nvarchar w tabeli na sql Server ma ciąg, którego nie można użyć w Shift-JIS. Nawiasem mówiąc, jeśli umieścisz te znaki w kolumnie varchar, istnieją znaki, których nie można użyć, takie jak kolumna "ColumnShiftJis" po prawej stronie. Wymień go.

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

W usługach SSIS przepływ jest skonfigurowany do odczytywania danych z poprzedniej tabeli, jak pokazano na rysunku, i wyprowadzania ich do pliku tekstowego.

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

Załóżmy, że chcesz go wyprowadzić jako plik CSV. Ponieważ Shift-JIS jest często używany w plikach CSV, ustaw kodowanie znaków pliku tekstowego na Shift-JIS.

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

Jeśli wykonasz z tym ustawieniem, wystąpi błąd w czasie wyjścia.

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

Zostanie wyświetlony komunikat o błędzie podobny do następującego:

エラー内容

Plik wyjściowy zostanie również przerwany w połowie, gdy wystąpi błąd.

出力されたテキスト

Jeśli spróbujesz wyprowadzić tak, jak jest, będzie to błąd, więc spróbuj włączyć "konwersję danych" w środku.

データ変換 追加

Przekonwertuj typ danych z "DT_WSTR" na "DT_STR" i przekształć go w formularz, który można wyprowadzić do Shift-JIS.

「DT_WSTR」から「DT_STR」に変換

Jeśli jednak wykonasz to również, pojawi się błąd. Wynika to z faktu, że usługi SSIS ściśle nie działają niejawne przetwarzanie, co powoduje brak danych. Jeśli chcesz, aby usługi SSIS wykonywały przetwarzanie tekstu bez wpisań, musisz jawnie określić podstawianie znaków dla wszystkich znaków.

データ変換エラー

Obejścia

Istnieje sposób zmiany typu tekstu za pomocą języka SQL podczas czytania z tabeli w bazie danych. Jeśli jest to SQL, to aparat SQL Server, który go uruchamia, a nie SSIS, więc może działać bez błędów. Nawiasem mówiąc, wszystkie znaki, których nie można użyć w Shift-JIS, to "?" Przekonwertowano na: Jest to specyfikacja po stronie programu SQL Server. Nawet jeśli nie jest to SSIS, wynik jest podobny dla wszystkich systemów korzystających z programu SQL Server.

Otwórz ADO NET Translator i zmień tryb dostępu do danych na SQL Command. Teraz, gdy możesz wprowadzić SQL, napisz instrukcję Select, aby pobrać dane z bazy danych. Tekst zawierający znaki, których nie można użyć w kombinacji Shift-JIS, jest przymusowo konwertowany na varchar za pomocą cast.

SQL で varchar に変換

Ponieważ znaki, których nie można używać w Shift-JIS, zostały już usunięte w momencie przepływu danych do SSIS, przetwarzanie można przekazać tak, jak jest.

処理成功

Widać, że tekst został pomyślnie zapisany w pliku CSV. Ponadto wszystkie znaki, których nie można użyć w Shift-JIS, to "?" Widać, że został przekonwertowany na:

出力されたテキスト