SSIS voert een Unicode-tekenreeks uit als een Shift-JIS-tekencode naar een tekstbestand

Aanmaakdatum van pagina :

Patronen die leiden tot fouten

Stel dat een kolom met het type nvarchar in een tabel op SQL Server een tekenreeks heeft die niet kan worden gebruikt in Shift-JIS. Trouwens, als je deze tekens in de varchar-kolom plaatst, zijn er tekens die niet kunnen worden gebruikt, zoals de kolom "ColumnShiftJis" aan de rechterkant. Vervang het.

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

Op SSIS is de stroom ingesteld om gegevens uit de vorige tabel te lezen zoals weergegeven in de afbeelding en deze uit te voeren naar een tekstbestand.

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

Stel dat u het wilt uitvoeren als een CSV-bestand. Aangezien Shift-JIS vaak wordt gebruikt in CSV-bestanden, stelt u de tekencodering van het tekstbestand in op Shift-JIS.

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

Als u met deze instelling uitvoert, treedt er een fout op bij het tijdstip van uitvoer.

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

Er wordt een foutbericht van de volgende strekking weergegeven:

エラー内容

Het uitvoerbestand wordt ook halverwege onderbroken wanneer de fout optrad.

出力されたテキスト

Als u probeert uit te voeren zoals het is, zal het een fout zijn, dus probeer "gegevensconversie" in het midden op te nemen.

データ変換 追加

Converteer het gegevenstype van "DT_WSTR" naar "DT_STR" en maak er een formulier van dat kan worden uitgevoerd naar Shift-JIS.

「DT_WSTR」から「DT_STR」に変換

Als u dit echter ook uitvoert, krijgt u een foutmelding. Dit komt omdat SSIS strikt faalt impliciete verwerking waardoor gegevens ontbreken. Als u wilt dat SSIS tekstontgeteuvre verwerkt, moet u expliciet tekenvervanging voor alle tekens opgeven.

データ変換エラー

Tijdelijke oplossingen

Er is een manier om het type tekst te wijzigen met SQL bij het lezen van een tabel in een database. Als het SQL is, is het de SQL Server-engine die het uitvoert, niet SSIS, zodat het zonder fouten kan worden uitgevoerd. Trouwens, alle tekens die niet kunnen worden gebruikt in Shift-JIS zijn "?" Geconverteerd naar: Dit is een specificatie aan de SQL Server-zijde. Zelfs als het geen SSIS is, is het resultaat vergelijkbaar voor alle systemen die SQL Server gebruiken.

Open ADO NET Translator en wijzig de gegevenstoegangsmodus in SQL Command. Nu u SQL kunt invoeren, schrijft u een Select-instructie om gegevens uit de database op te halen. Tekst die tekens bevat die niet kunnen worden gebruikt in Shift-JIS, wordt met cast geforceerd geconverteerd naar varchar.

SQL で varchar に変換

Aangezien tekens die niet in Shift-JIS kunnen worden gebruikt, al zijn verwijderd op het moment dat gegevens naar SSIS stromen, kan de verwerking worden doorgegeven zoals deze is.

処理成功

U kunt zien dat de tekst met succes naar de CSV is geschreven. Ook zijn alle tekens die niet kunnen worden gebruikt in Shift-JIS "?" U kunt zien dat het is omgezet in:

出力されたテキスト