SSIS mengeluarkan rentetan Unikod sebagai kod aksara Shift-JIS ke fail teks

Tarikh penciptaan halaman :

Corak yang mengakibatkan ralat

Anggapkan bahawa lajur jenis nvarchar dalam jadual pada SQL Server mempunyai rentetan yang tidak boleh digunakan dalam Shift-JIS. Dengan cara ini, jika anda meletakkan watak-watak ini dalam lajur varchar, terdapat aksara yang tidak boleh digunakan, seperti lajur "ColumnShiftJis" di sebelah kanan. Gantikannya.

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

Pada SSIS, aliran disediakan untuk membaca data dari jadual sebelumnya seperti yang ditunjukkan dalam gambar dan mengeluarkannya ke fail teks.

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

Anggap bahawa anda ingin mengeluarkannya sebagai fail CSV. Oleh kerana Shift-JIS sering digunakan dalam fail CSV, tetapkan pengekodan aksara fail teks ke Shift-JIS.

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

Jika anda melaksanakan dengan tetapan ini, ralat akan berlaku pada masa output.

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

Mesej ralat yang serupa dengan yang berikut muncul:

エラー内容

Fail output juga akan terganggu separuh jalan apabila ralat berlaku.

出力されたテキスト

Jika anda cuba untuk output seperti itu, ia akan menjadi ralat, jadi cuba masukkan "penukaran data" di tengah.

データ変換 追加

Tukar jenis data daripada "DT_WSTR" kepada "DT_STR" dan jadikan ia sebagai borang yang boleh dikeluarkan kepada Shift-JIS.

「DT_WSTR」から「DT_STR」に変換

Walau bagaimanapun, jika anda juga melaksanakan ini, anda akan mendapat ralat. Ini kerana SSIS gagal dalam pemprosesan tersirat yang menyebabkan data hilang. Jika anda mahu SSIS melakukan pemprosesan detyped teks, anda perlu menentukan penggantian aksara secara eksplisit untuk semua aksara.

データ変換エラー

Workarounds

Terdapat cara untuk menukar jenis teks menggunakan SQL apabila membaca dari jadual dalam pangkalan data. Jika ia SQL, ia adalah enjin SQL Server yang menjalankannya, bukan SSIS, jadi ia boleh berjalan tanpa ralat. Dengan cara ini, semua watak yang tidak boleh digunakan dalam Shift-JIS adalah "?" Ditukar kepada: Ini adalah spesifikasi sisi SQL Server. Walaupun ia bukan SSIS, hasilnya serupa untuk semua sistem yang menggunakan SQL Server.

Buka Penterjemah BERSIH ADO dan ubah mod capaian data kepada SQL Command. Sekarang anda boleh memasukkan SQL, tulis kenyataan Pilih untuk mendapatkan data daripada pangkalan data. Teks yang mengandungi aksara yang tidak boleh digunakan dalam Shift-JIS ditukar secara paksa kepada varchar menggunakan cast.

SQL で varchar に変換

Oleh kerana aksara yang tidak boleh digunakan dalam Shift-JIS telah dialih keluar pada masa data yang mengalir ke SSIS, pemprosesan boleh diluluskan seperti itu.

処理成功

Anda dapat melihat bahawa teks berjaya ditulis ke CSV. Juga, semua aksara yang tidak boleh digunakan dalam Shift-JIS adalah "?" Anda dapat melihat bahawa ia telah ditukar kepada:

出力されたテキスト