SSIS matar ut en Unicode-sträng som en Shift-JIS-teckenkod till en textfil

Datum för skapande av sida :

Mönster som resulterar i fel

Anta att en kolumn av typen nvarchar i en tabell på SQL Server har en sträng som inte kan användas i Skift-JIS. Förresten, om du lägger dessa tecken i varchar-kolumnen finns det tecken som inte kan användas, till exempel kolumnen "ColumnShiftJis" till höger. Byt ut det.

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

På SSIS ställs flödet in för att läsa data från föregående tabell som visas i figuren och mata ut dem till en textfil.

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

Anta att du vill mata ut den som en CSV-fil. Eftersom Shift-JIS ofta används i CSV-filer anger du teckenkodningen för textfilen till Shift-JIS.

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

Om du kör med den här inställningen uppstår ett fel vid tidpunkten för utdata.

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

Ett felmeddelande som liknar följande visas:

エラー内容

Utdatafilen kommer också att avbrytas halvvägs när felet inträffade.

出力されたテキスト

Om du försöker mata ut som det är kommer det att bli ett fel, så försök att införliva "datakonvertering" i mitten.

データ変換 追加

Konvertera datatypen från "DT_WSTR" till "DT_STR" och gör den till ett formulär som kan matas ut till Shift-JIS.

「DT_WSTR」から「DT_STR」に変換

Men om du också kör detta får du ett fel. Detta beror på att SSIS strikt misslyckas med implicit bearbetning som gör att data saknas. Om du vill att SSIS ska utföra textdetypad bearbetning måste du uttryckligen ange teckenersättning för alla tecken.

データ変換エラー

Lösningar

Det finns ett sätt att ändra typen av text med SQL när du läser från en tabell i en databas. Om det är SQL är det SQL Server-motorn som kör den, inte SSIS, så den kan köras utan fel. Förresten, alla tecken som inte kan användas i Shift-JIS är "?" Konverterad till: Detta är en SQL Server sidospecifikation. Även om det inte är SSIS är resultatet liknande för alla system som använder SQL Server.

Öppna ADO NET Translator och ändra dataåtkomstläget till SQL Command. Nu när du kan ange SQL skriver du en Select-instruktion för att hämta data från databasen. Text som innehåller tecken som inte kan användas i Shift-JIS tvångskonverteras till varchar med cast.

SQL で varchar に変換

Eftersom tecken som inte kan användas i Shift-JIS redan har tagits bort vid tidpunkten för data som flödar till SSIS kan bearbetningen skickas som den är.

処理成功

Du kan se att texten har skrivits till CSV-filen. Dessutom är alla tecken som inte kan användas i Shift-JIS "?" Du kan se att den har konverterats till:

出力されたテキスト