SSIS vypíše řetězec Unicode jako kód znaku Shift-JIS do textového souboru

Datum vytvoření stránky :

Vzory, které vedou k chybám

Předpokládejme, že sloupec typu nvarchar v tabulce na serveru SQL Server má řetězec, který nelze použít v Shift-JIS. Mimochodem, pokud tyto znaky vložíte do sloupce varchar, existují znaky, které nelze použít, například sloupec "ColumnShiftJis" vpravo. Vyměňte jej.

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

V SSIS je tok nastaven tak, aby četl data z předchozí tabulky, jak je znázorněno na obrázku, a výstup do textového souboru.

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

Předpokládejme, že jej chcete vyvést jako soubor CSV. Vzhledem k tomu, že Shift-JIS se často používá v souborech CSV, nastavte kódování znaků textového souboru na Shift-JIS.

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

Pokud provedete s tímto nastavením, dojde k chybě při časování výstupu.

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

Zobrazí se chybová zpráva podobná následující:

エラー内容

Výstupní soubor bude také přerušen v polovině, když dojde k chybě.

出力されたテキスト

Pokud se pokusíte výstup tak, jak je, bude to chyba, takže zkuste začlenit "převod dat" uprostřed.

データ変換 追加

Převeďte datový typ z "DT_WSTR" na "DT_STR" a vytvořte jej do formuláře, který lze výstupem do Shift-JIS.

「DT_WSTR」から「DT_STR」に変換

Pokud to však také provedete, zobrazí se chyba. Je to proto, že SSIS striktně selhává implicitní zpracování, které způsobuje, že data chybí. Pokud chcete, aby SSIS prováděl zpracování textu bez překlepu, budete muset explicitně zadat nahrazení znaků pro všechny znaky.

データ変換エラー

Možná zástupná řešení

Existuje způsob, jak změnit typ textu pomocí SQL při čtení z tabulky v databázi. Pokud je to SQL, je to modul SQL Server, který ho spouští, ne SSIS, takže se dá spustit bez chyb. Mimochodem, všechny znaky, které nelze použít v Shift-JIS, jsou "?" Převedeno na: Toto je specifikace na straně SQL Serveru. I když se nejedná o SSIS, výsledek je podobný pro všechny systémy, které používají SQL Server.

Otevřete ADO NET Translator a změňte režim přístupu k datům na SQL Command. Teď, když můžete zadat SQL, napište příkaz Select pro načtení dat z databáze. Text, který obsahuje znaky, které nelze použít v Shift-JIS, je násilně převeden na varchar pomocí přetypování.

SQL で varchar に変換

Vzhledem k tomu, že znaky, které nelze použít v Shift-JIS, již byly odebrány v době toku dat do SSIS, může být zpracování předáno tak, jak je.

処理成功

Můžete vidět, že text je úspěšně zapsán do souboru CSV. Také všechny znaky, které nelze použít v Shift-JIS, jsou "?" Můžete vidět, že byl převeden na:

出力されたテキスト