SSIS emet una cadena Unicode com a codi de caràcter Shift-JIS a un fitxer de text

Data de creació de la pàgina :

Patrons que provoquen errors

Suposem que una columna del tipus nvarchar en una taula de l'SQL Server té una cadena que no es pot utilitzar a Shift-JIS. Per cert, si poseu aquests caràcters a la columna varchar, hi ha caràcters que no es poden utilitzar, com ara la columna "ColumnShiftJis" a la dreta. Substituïu-lo.

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

Al SSIS, el flux està configurat per llegir les dades de la taula anterior com es mostra a la figura i emetre-les a un fitxer de text.

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

Suposem que voleu emetre'l com a fitxer CSV. Com que Shift-JIS s'utilitza sovint en fitxers CSV, establiu la codificació de caràcters del fitxer de text a Maj-JIS.

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

Si executeu amb aquesta configuració, es produirà un error en el moment de la sortida.

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

Apareix un missatge d'error similar al següent:

エラー内容

El fitxer de sortida també s'interromprà a la meitat del moment en què s'hagi produït l'error.

出力されたテキスト

Si intenteu sortir tal com és, serà un error, així que proveu d'incorporar "conversió de dades" al mig.

データ変換 追加

Convertiu el tipus de dades de "DT_WSTR" a "DT_STR" i convertiu-lo en un formulari que es pot sortir a Maj-JIS.

「DT_WSTR」から「DT_STR」に変換

Tanmateix, si també executeu això, obtindreu un error. Això es deu al fet que el SSIS falla estrictament el processament implícit que fa que faltin dades. Si voleu que SSIS realitzi un processament destipat de text, haureu d'especificar explícitament la substitució de caràcters per a tots els caràcters.

データ変換エラー

Solucions

Hi ha una manera de canviar el tipus de text que utilitza SQL quan es llegeix des d'una taula d'una base de dades. Si és SQL, és el motor SQL Server qui l'executa, no SSIS, de manera que es pot executar sense errors. Per cert, tots els caràcters que no es poden utilitzar a Shift-JIS són "?" S'ha convertit a: Aquesta és una especificació lateral de l'SQL Server. Fins i tot si no és SSIS, el resultat és similar per a tots els sistemes que utilitzen SQL Server.

Obriu ADO NET Translator i canvieu el mode d'accés a les dades a l'ordre SQL. Ara que podeu introduir sQL, escriviu una sentència Selecciona per recuperar dades de la base de dades. El text que conté caràcters que no es poden utilitzar a Maj-JIS es converteix per la la seva manera a varchar utilitzant el repartiment.

SQL で varchar に変換

Com que els caràcters que no es poden utilitzar a Maj-JIS ja s'han suprimit en el moment en què les dades flueixen al SSIS, el processament es pot passar tal com és.

処理成功

Podeu veure que el text s'ha escrit correctament al CSV. A més, tots els caràcters que no es poden utilitzar a Shift-JIS són "?" Podeu veure que s'ha convertit en:

出力されたテキスト