SSIS pateikia Unicode eilutę kaip Shift-JIS simbolių kodą į tekstinį failą

Puslapio sukūrimo data :

Modeliai, dėl kurių atsiranda klaidų

Tarkime, kad SQL serverio lentelės nvarchar tipo stulpelis turi eilutę, kurios negalima naudoti Shift-JIS. Beje, jei šiuos simbolius įdėsite į varcharo stulpelį, yra simbolių, kurių negalima naudoti, pvz., Dešinėje esantis stulpelis "ColumnShiftJis". Pakeiskite jį.

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

SSIS srautas nustatomas taip, kad perskaitytų duomenis iš ankstesnės lentelės, kaip parodyta paveikslėlyje, ir išvestų juos į tekstinį failą.

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

Tarkime, kad norite išvesti jį kaip CSV failą. Kadangi Shift-JIS dažnai naudojamas CSV failuose, nustatykite teksto failo simbolių kodavimą į Shift-JIS.

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

Jei vykdysite naudodami šį parametrą, išvesties metu įvyks klaida.

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

Pasirodo klaidos pranešimas, panašus į toliau nurodytus:

エラー内容

Išvesties failas taip pat bus nutrauktas įpusėjus klaidai.

出力されたテキスト

Jei bandysite išvesti taip, kaip yra, tai bus klaida, todėl pabandykite įtraukti "duomenų konvertavimą" viduryje.

データ変換 追加

Konvertuokite duomenų tipą iš "DT_WSTR" į "DT_STR" ir paverskite jį forma, kurią galima išvesti į Shift-JIS.

「DT_WSTR」から「DT_STR」に変換

Tačiau, jei jūs taip pat tai atliksite, gausite klaidą. Taip yra todėl, kad SSIS griežtai nesugeba atlikti numanomo apdorojimo, dėl kurio trūksta duomenų. Jei norite, kad SSIS atliktų teksto detyped apdorojimą, turėsite aiškiai nurodyti visų simbolių pakeitimą.

データ変換エラー

Sprendimo būdai

Yra būdas pakeisti teksto tipą naudojant SQL, kai skaitoma iš duomenų bazės lentelės. Jei tai SQL, jį valdo SQL serverio variklis, o ne SSIS, todėl jis gali veikti be klaidų. Beje, visi simboliai, kurių negalima naudoti "Shift-JIS", yra "?" Konvertuota į: Tai SQL serverio pusės specifikacija. Net jei tai nėra SSIS, rezultatas yra panašus visoms sistemoms, kurios naudoja SQL serverį.

Atidarykite ADO NET vertėją ir pakeiskite duomenų prieigos režimą į SQL komandą. Dabar, kai galite įvesti SQL, parašykite pažymą Pasirinkti, kad gautumėte duomenis iš duomenų bazės. Tekstas, kuriame yra simbolių, kurių negalima naudoti Shift-JIS, prievarta konvertuojamas į varcharą naudojant lietą.

SQL で varchar に変換

Kadangi simboliai, kurių negalima naudoti Shift-JIS, jau buvo pašalinti tuo metu, kai duomenys perduodami į SSIS, apdorojimas gali būti perduotas toks, koks yra.

処理成功

Galite matyti, kad tekstas sėkmingai įrašytas į CSV. Be to, visi simboliai, kurių negalima naudoti "Shift-JIS", yra "?" Galite matyti, kad jis buvo konvertuotas į:

出力されたテキスト