SSIS pateikia Unicode eilutę kaip Shift-JIS simbolių kodą į tekstinį failą
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į.
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.
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.
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ą.
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 į: