Saya membuat paket di mana saya akan mengekspor data dari database ke file excel kosong. Ketika saya menambahkan hanya komponen sumber dan tujuan dan saya menjalankan paket saya mendapatkan kesalahan konversi yang menyatakan kolom Output dan kolom "A" tidak dapat mengkonversi antara tipe data string unicode dan non-unicode.
Untuk memperbaikinya saya menambahkan komponen konversi data dan mengkonversi semua kolom
"String Unicode [DT_WSTR]"
dan saya tidak lagi menerima kesalahan. Satu-satunya masalah adalah bahwa saya memiliki sekitar 50 kolom di mana saya harus pergi 1 per 1 dan pilih "Unicode String [DT_WSTR]" dari daftar drop-down. Saya kemudian harus masuk ke komponen tujuan dan memetakan kolom yang baru dikonversi ke file excel saya.
Pertanyaan saya adalah, jika ada orang lain yang menemukan ini, apakah ada cara yang lebih baik dan lebih efisien untuk berkeliling harus melakukan semua konversi tipe data manual? Harus mengkonversi dan memetakan semua kolom satu per satu tampaknya tidak praktis terutama jika Anda memiliki banyak baris.
Saya mengerti file excel bukan cara terbaik untuk mengimpor dan mengekspor data, tetapi itulah yang diperlukan dalam kasus khusus ini.
Saya mungkin mencari cara untuk hanya mengekspor ke file teks datar dan kemudian mencoba untuk mengkonversi ke excel sebagai langkah terakhir dalam paket. Saya hopping ini tidak akan memicu kesalahan konversi unicode / nonunicode yang sama.
sumber
Jawaban:
Sebagai alternatif untuk RDC, saya hanya melewatkan konversi tipe data dalam SSIS dan secara eksplisit melemparkan mereka sebagai nvarchar dalam permintaan sumber saya.
Pemakaian
Dalam query sumber Anda (dan Anda sedang menggunakan query sumber dan tidak hanya memilih meja di drop down), secara eksplisit dilemparkan hal ke n sesuai (var) panjang arang.
Dari pada
gunakan kueri seperti
Siswa yang cerdik dari AdventureWorks akan mengenali data yang sudah merupakan
n(var)char
tipe tetapi ini hanya untuk menunjukkan konsepnya.Manfaat
Data Conversion Component
SSISsumber
CONVERT
harus lebih mudah untuk menyisipkan 50 kali daripadaCAST
, karena argumen di depanSecara alami, tidak ada cara untuk melakukan itu. Tetapi Anda dapat mengunduh - Mengganti Komponen Konversi Data untuk SSIS dari Codeplex dan melakukannya dalam satu kesempatan.
Info lebih lanjut dapat ditemukan di sini .
sumber
Jika Anda hanya perlu mengubah dari "string Unicode (DT_WSTR)" ke "string (DT_STR)" atau sebaliknya, maka Anda dapat melakukan ini:
Cari string
DTS:DataType
jika diikuti oleh = "130", maka Kolom didefinisikan sebagai DT_WSTR (unicode).Jika diikuti oleh = "129", maka Kolom didefinisikan sebagai DT_STR (non-unicode), gunakan pencarian dan gantikan dengan hati-hati (Anda membuat salinan sebelumnya, bukan?)
Simpan file dan mungkin ini dia.
sumber