SSIS genera una cadena Unicode como código de caracteres Shift-JIS en un archivo de texto

Fecha de creación de la página :

Patrones que dan lugar a errores

Supongamos que una columna de tipo nvarchar en una tabla de SQL Server tiene una cadena que no se puede usar en Shift-JIS. Por cierto, si pones estos caracteres en la columna varchar, hay caracteres que no se pueden usar, como la columna "ColumnShiftJis" a la derecha. Reemplázalo.

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

En SSIS, el flujo está configurado para leer datos de la tabla anterior como se muestra en la figura y enviarlos a un archivo de texto.

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

Suponga que desea generarlo como un archivo CSV. Dado que Shift-JIS se usa a menudo en archivos CSV, establezca la codificación de caracteres del archivo de texto en Shift-JIS.

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

Si se ejecuta con esta configuración, se producirá un error en el momento de la salida.

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

Aparece un mensaje de error similar al siguiente:

エラー内容

El archivo de salida también se interrumpirá a mitad de camino cuando se produjo el error.

出力されたテキスト

Si intenta generar resultados tal como están, será un error, así que intente incorporar "conversión de datos" en el medio.

データ変換 追加

Convierta el tipo de datos de "DT_WSTR" a "DT_STR" y conviértalo en un formulario que se pueda enviar a Shift-JIS.

「DT_WSTR」から「DT_STR」に変換

Sin embargo, si también ejecuta esto, obtendrá un error. Esto se debe a que SSIS falla estrictamente el procesamiento implícito que hace que falten datos. Si desea que SSIS realice el procesamiento de texto destipado, deberá especificar explícitamente la sustitución de caracteres para todos los caracteres.

データ変換エラー

Soluciones provisionales

Hay una manera de cambiar el tipo de texto usando SQL al leer desde una tabla en una base de datos. Si es SQL, es el motor de SQL Server el que lo ejecuta, no SSIS, por lo que puede ejecutarse sin errores. Por cierto, todos los caracteres que no se pueden usar en Shift-JIS son "?" Convertido a: Esta es una especificación del lado de SQL Server. Incluso si no es SSIS, el resultado es similar para todos los sistemas que usan SQL Server.

Abra ADO NET Translator y cambie el modo de acceso a datos a SQL Command. Ahora que puede escribir SQL, escriba una instrucción Select para recuperar datos de la base de datos. El texto que contiene caracteres que no se pueden usar en Shift-JIS se convierte a la fuerza a varchar mediante cast.

SQL で varchar に変換

Dado que los caracteres que no se pueden usar en Shift-JIS ya se han eliminado en el momento en que los datos fluyen a SSIS, el procesamiento se puede pasar tal cual.

処理成功

Puede ver que el texto se ha escrito correctamente en el CSV. Además, todos los caracteres que no se pueden usar en Shift-JIS son "?" Puede ver que se ha convertido en:

出力されたテキスト