SSIS restituisce una stringa Unicode come codice carattere Shift-JIS in un file di testo

Data di creazione della pagina :

Modelli che generano errori

Si supponga che una colonna di tipo nvarchar in una tabella in SQL Server dispone di una stringa che non può essere utilizzata in Shift-JIS. A proposito, se metti questi caratteri nella colonna varchar, ci sono caratteri che non possono essere utilizzati, come la colonna "ColumnShiftJis" a destra. Sostituirlo.

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

In SSIS, il flusso è impostato per leggere i dati della tabella precedente come illustrato nella figura e inviarli in un file di testo.

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

Si supponga di volerlo generare come file CSV. Poiché Shift-JIS viene spesso utilizzato nei file CSV, impostare la codifica dei caratteri del file di testo su Shift-JIS.

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

Se si esegue con questa impostazione, si verificherà un errore al momento dell'output.

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

Viene visualizzato un messaggio di errore analogo al seguente:

エラー内容

Anche il file di output verrà interrotto a metà quando si è verificato l'errore.

出力されたテキスト

Se provi a produrre così com'è, sarà un errore, quindi prova a incorporare "conversione dati" nel mezzo.

データ変換 追加

Converti il tipo di dati da "DT_WSTR" a "DT_STR" e trasformalo in un modulo che può essere inviato a Shift-JIS.

「DT_WSTR」から「DT_STR」に変換

Tuttavia, se esegui anche questo, otterrai un errore. Questo perché SSIS non riesce rigorosamente l'elaborazione implicita che causa la mancanza di dati. Se si desidera che SSIS esegua l'elaborazione detipizzata del testo, sarà necessario specificare in modo esplicito la sostituzione dei caratteri per tutti i caratteri.

データ変換エラー

Soluzioni alternative

Esiste un modo per modificare il tipo di testo utilizzando SQL durante la lettura da una tabella in un database. Se è SQL, è il motore di SQL Server che lo esegue, non SSIS, quindi può essere eseguito senza errori. A proposito, tutti i caratteri che non possono essere utilizzati in Shift-JIS sono "?" Convertito in: Si tratta di una specifica laterale di SQL Server. Anche se non si tratta di SSIS, il risultato è simile per tutti i sistemi che utilizzano SQL Server.

Aprire ADO NET Translator e modificare la modalità di accesso ai dati in Comando SQL. Ora che è possibile immettere SQL, scrivere un'istruzione Select per recuperare i dati dal database. Il testo che contiene caratteri che non possono essere utilizzati in Shift-JIS viene convertito forzatamente in varchar usando cast.

SQL で varchar に変換

Poiché i caratteri che non possono essere utilizzati in Shift-JIS sono già stati rimossi al momento del flusso dei dati a SSIS, l'elaborazione può essere passata così com'è.

処理成功

Puoi vedere che il testo è stato scritto correttamente nel CSV. Inoltre, tutti i caratteri che non possono essere utilizzati in Shift-JIS sono "?" Puoi vedere che è stato convertito in:

出力されたテキスト