Ada kolom di Excel yang seharusnya berupa teks, tetapi SSIS melihat teks numerik di sana dan secara otomatis membuatnya menjadi float presisi ganda [DT_R8].
Saya dapat mengubahnya secara manual di kolom Eksternal dan Output cabang Output, tetapi Output Kesalahan menolak untuk membiarkan saya mengubah kolom masing-masing.
Error at Extract Stations [Excel Source [1]]: The data type for "output "Excel Source Error Output" (10)" cannot be modified in the error "output column "Group No" (29)".
Error at Extract Stations [Excel Source [1]]: Failed to set property "DataType" on "output column "Group No" (29)".
Saya telah mencoba memodifikasi paket xml. Saya mencoba IMEX=1
dan typeguessrow=0
tetapi tidak ada yang memperbaiki masalah saya. Apakah ini memiliki perbaikan sama sekali? Ada juga artikel yang menyarankan Anda memodifikasi registri Anda sehingga excel membaca lebih dari 8 baris default sebelum menebak tipe data. Saya tidak ingin menempuh rute ini karena walaupun itu berfungsi, maka saya harus memodifikasi registri pada mesin yang saya rencanakan untuk menjalankan paket.
Bidang excel yang akan diimpor ke bidang SQL nvarchar berbunyi misalnya
295.3
296.33
tetapi mereka sedang ditulis ke tabel SQL sebagai
295.30000000000001
296.32999999999998
Saya memasukkan dataviewers dan bidang menampilkan
295.3
296.33
semua jalan melalui eksekusi yang benar tapi saya kira ketika hits sumber Tujuan OLE DB entah bagaimana mengubahnya menjadi
295.30000000000001
296.32999999999998
mana yang salah
Saya juga memiliki nilai-nilai seperti V321.1 dan V213.34 misalnya yang pasti bukan bilangan bulat dan perlu disimpan sebagai varchar.
sumber
Jawaban:
Apakah mungkin untuk mendapatkan file tersebut sebagai file .csv yang dapat diimpor seperti file teks dan tidak akan memiliki masalah ini? Saya biasanya menendang kembali semua file Excel dan meminta format lain karena SSIS dan Excel tidak bermain bersama dengan baik di banyak level.
sumber
Tampaknya tidak ada cara untuk memperbaiki masalah ini. Excel melihat pada beberapa baris pertama data dalam kolom dan akan selalu PAKSA datatype ke FLOAT apa pun yang terjadi. Saya diberi solusi untuk membuat templat dengan beberapa karakter varchar di beberapa baris pertama (8+) sehingga EXCEL akan mengambilnya sebagai tipe data dan kemudian mengimpor data saya. Satu hal yang membantu adalah karena saya menggunakan Source Safe, saya dapat "Memeriksa" file sehingga membuat file paket saya "Hanya Baca" sehingga Visual Studio tidak dapat mengubah tipe data yang saya tentukan sebelumnya.
sumber
Langkah 1: Tambahkan
IMEX=1; MAXROWSTOSCAN=0
string koneksi (misalnyaProvider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Source\filename.xlsx;Extended Properties="EXCEL 12.0 XML;HDR=YES;IMEX=1; MAXROWSTOSCAN=0"
).Langkah 2: Tutup solusinya. Buka paket SSIS dalam editor teks, cari kolom yang terus membalik kembali ke tipe data yang ditentukan sebelumnya. Perbarui secara manual dalam file XML ke format yang diinginkan.
Langkah 3: Buka paket di Alat Data Server SQL dan jalankan, sekarang Anda harus dapat memuat data karena dari file.
sumber