SSIS vypustí reťazec Unicode ako kód znaku Shift-JIS do textového súboru

Dátum vytvorenia strany :

Vzory, ktoré vedú k chybám

Predpokladajme, že stĺpec typu nvarchar v tabuľke na SQL Serveri má reťazec, ktorý nie je možné použiť v shift-JIS. Mimochodom, ak tieto znaky vložíte do stĺpca varchar, existujú znaky, ktoré nie je možné použiť, ako napríklad stĺpec "ColumnShiftJis" vpravo. Vymeňte ho.

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

V SSIS je postup nastavený tak, aby čítal údaje z predchádzajúcej tabuľky, ako je znázornené na obrázku, a výstup do textového súboru.

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

Predpokladajme, že ho chcete výstupovať ako súbor CSV. Keďže Shift-JIS sa často používa v súboroch CSV, nastavte kódovanie znakov textového súboru na Shift-JIS.

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

Ak vykonáte toto nastavenie, pri načasovaní výstupu sa vyskytne chyba.

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

Zobrazí sa chybové hlásenie podobné nasledujúcemu:

エラー内容

Výstupný súbor bude tiež prerušený v polovici, keď sa vyskytla chyba.

出力されたテキスト

Ak sa pokúsite výstup tak, ako to je, bude to chyba, takže skúste začleniť "konverziu údajov" do stredu.

データ変換 追加

Preveďte typ údajov z "DT_WSTR" na "DT_STR" a urobte z neho formu, ktorá môže byť výstupná na Shift-JIS.

「DT_WSTR」から「DT_STR」に変換

Ak to však vykonáte aj vy, zobrazí sa chyba. Je to preto, že SSIS striktne zlyháva v implicitnom spracovaní, ktoré spôsobuje chýbajúce údaje. Ak chcete, aby SSIS vykonávala spracovanie s textom, budete musieť explicitne určiť substitúciu znakov pre všetky znaky.

データ変換エラー

Alternatívne riešenia

Existuje spôsob, ako zmeniť typ textu pomocou SQL pri čítaní z tabuľky v databáze. Ak je to SQL, spúšťa ho engin SQL Server, nie SSIS, takže môže bežať bez chýb. Mimochodom, všetky znaky, ktoré nie je možné použiť v Shift-JIS, sú "?" Prepočítané na: Toto je špecifikácia strany SQL Servera. Aj keď to nie je SSIS, výsledok je podobný pre všetky systémy, ktoré používajú SQL Server.

Otvorte ADO NET Translator a zmeňte režim prístupu k údajom na príkaz SQL. Teraz, keď môžete zadať SQL, napíšte vyhlásenie Vybrať a získajte údaje z databázy. Text obsahujúci znaky, ktoré nie je možné použiť v Shift-JIS, sa násilne skonvertuje na varchar pomocou odliatku.

SQL で varchar に変換

Keďže znaky, ktoré nie je možné použiť v službe Shift-JIS, už boli odstránené v čase toku údajov do SSIS, spracovanie sa môže preniesť tak, ako je.

処理成功

Môžete vidieť, že text je úspešne napísaný do CSV. Všetky znaky, ktoré nie je možné použiť v Shift-JIS, sú tiež "?" Môžete vidieť, že bol konvertovaný na:

出力されたテキスト