SSIS menampilkan string Unicode sebagai kode karakter Shift-JIS ke file teks

Tanggal pembuatan halaman :

Pola yang mengakibatkan kesalahan

Misalnya kolom tipe nvarchar dalam tabel di SQL Server memiliki string yang tidak dapat digunakan dalam Shift-JIS. Omong-omong, jika Anda meletakkan karakter ini di kolom varchar, ada karakter yang tidak dapat digunakan, seperti kolom "ColumnShiftJis" di sebelah kanan. Ganti itu.

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

Pada SSIS, alur diatur untuk membaca data dari tabel sebelumnya seperti yang diperlihatkan pada gambar dan menampilkannya ke file teks.

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

Asumsikan bahwa Anda ingin menampilkannya sebagai file CSV. Karena Shift-JIS sering digunakan dalam file CSV, atur pengkodean karakter file teks ke Shift-JIS.

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

Jika Anda mengeksekusi dengan pengaturan ini, kesalahan akan terjadi pada waktu output.

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

Pesan kesalahan yang mirip dengan berikut ini muncul:

エラー内容

File output juga akan terganggu di tengah jalan ketika kesalahan terjadi.

出力されたテキスト

Jika Anda mencoba untuk menghasilkan apa adanya, itu akan menjadi kesalahan, jadi coba masukkan "konversi data" di tengah.

データ変換 追加

Ubah tipe data dari "DT_WSTR" menjadi "DT_STR" dan buat menjadi formulir yang dapat dihasilkan ke Shift-JIS.

「DT_WSTR」から「DT_STR」に変換

Namun, jika Anda juga menjalankan ini, Anda akan mendapatkan kesalahan. Ini karena SSIS secara ketat gagal dalam pemrosesan implisit yang menyebabkan data hilang. Jika Anda ingin SSIS melakukan pemrosesan detipe teks, Anda harus secara eksplisit menentukan substitusi karakter untuk semua karakter.

データ変換エラー

Penanganan masalah

Ada cara untuk mengubah jenis teks menggunakan SQL saat membaca dari tabel dalam database. Jika SQL, itu adalah mesin SQL Server yang menjalankannya, bukan SSIS, sehingga dapat berjalan tanpa kesalahan. Ngomong-ngomong, semua karakter yang tidak bisa digunakan di Shift-JIS adalah "?" Dikonversi ke: Ini adalah spesifikasi sisi SQL Server. Bahkan jika itu bukan SSIS, hasilnya serupa untuk semua sistem yang menggunakan SQL Server.

Buka ADO NET Translator dan ubah mode akses data ke SQL Command. Sekarang setelah Anda dapat memasuki SQL, tulis pernyataan Pilih untuk mengambil data dari database. Teks yang berisi karakter yang tidak dapat digunakan dalam Shift-JIS dikonversi secara paksa menjadi varchar menggunakan cast.

SQL で varchar に変換

Karena karakter yang tidak dapat digunakan dalam Shift-JIS telah dihapus pada saat data mengalir ke SSIS, pemrosesan dapat diteruskan apa adanya.

処理成功

Anda dapat melihat bahwa teks berhasil ditulis ke CSV. Selain itu, semua karakter yang tidak dapat digunakan dalam Shift-JIS adalah "?" Anda dapat melihat bahwa itu telah dikonversi ke:

出力されたテキスト