SSIS udsender en Unicode-streng som en Shift-JIS-tegnkode til en tekstfil

Dato for oprettelse af side :

Mønstre, der resulterer i fejl

Antag, at en kolonne af typen nvarchar i en tabel på SQL Server har en streng, der ikke kan bruges i Shift-JIS. Forresten, hvis du sætter disse tegn i varcharkolonnen, er der tegn, der ikke kan bruges, såsom kolonnen "ColumnShiftJis" til højre. Udskift det.

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

På SSIS er flowet konfigureret til at læse data fra den forrige tabel som vist i figuren og sende dem ud i en tekstfil.

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

Antag, at du vil output det som en CSV-fil. Da Shift-JIS ofte bruges i CSV-filer, skal du indstille tegnkodningen af tekstfilen til Shift-JIS.

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

Hvis du udfører med denne indstilling, opstår der en fejl på tidspunktet for output.

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

Der vises en fejlmeddelelse svarende til følgende:

エラー内容

Outputfilen afbrydes også halvvejs igennem, da fejlen opstod.

出力されたテキスト

Hvis du forsøger at output som det er, vil det være en fejl, så prøv at inkorporere "datakonvertering" i midten.

データ変換 追加

Konverter datatypen fra "DT_WSTR" til "DT_STR" og gør den til en formular, der kan outputs til Shift-JIS.

「DT_WSTR」から「DT_STR」に変換

Men hvis du også udfører dette, får du en fejl. Dette skyldes, at SSIS strengt undlader implicit behandling, der får data til at mangle. Hvis du vil have SSIS til at udføre tekstdeponeret behandling, skal du eksplicit angive tegnsubstitution for alle tegn.

データ変換エラー

Løsninger

Der er en måde at ændre typen af tekst ved hjælp af SQL, når du læser fra en tabel i en database. Hvis det er SQL, er det SQL Server-programmet, der kører det, ikke SSIS, så det kan køre uden fejl. Forresten er alle tegn, der ikke kan bruges i Shift-JIS, "?" Konverteret til: Dette er en SQL Server-sidespecifikation. Selvom det ikke er SSIS, er resultatet ens for alle systemer, der bruger SQL Server.

Åbn ADO NET Translator, og skift dataadgangstilstand til SQL Command. Nu, hvor du kan indtaste SQL, skal du skrive en Vælg-sætning for at hente data fra databasen. Tekst, der indeholder tegn, der ikke kan bruges i Shift-JIS, konverteres med magt til varchar ved hjælp af cast.

SQL で varchar に変換

Da tegn, der ikke kan bruges i Shift-JIS, allerede er fjernet på tidspunktet for data, der strømmer til SSIS, kan behandlingen videregives, som den er.

処理成功

Du kan se, at teksten er skrevet til CSV-filen. Alle tegn, der ikke kan bruges i Shift-JIS, er også "?" Du kan se, at det er blevet konverteret til:

出力されたテキスト