SSIS vypustí reťazec Unicode ako kód znaku Shift-JIS do textového súboru
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.
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.
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.
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.
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: