Penyebab masalahnya adalah penyedia Oledb
Saat mengimpor file csv atau file excel dengan kolom tipe data campuran, itu akan menggantikan tipe yang tidak dominan dengan null
. (Menggunakan Oledb atau Ace.Oledb )
Solusi
Anda dapat melakukan beberapa solusi dengan menambahkan baris pertama yang berisi nilai string kemudian menghapusnya setelah peniruan selesai
ID,A,B,C
0,a,a,a
1,12,hh,i
2,ab12,tt,b
3,2,aa,o
4,bc12,ee,l
Dan itu akan memperbaiki masalah jika menggunakan IMEX=1
Ini akan membaca kolom sebagai string dan kolom ID sebagai angka. (0 digunakan)
Atau tambahkan HDR=NO
properti ke string koneksi sehingga header adalah baris pertama yang diimpor (semua nilainya adalah string)
Baca selengkapnya tentang tipe data campuran di artikel
Metode lain
Atau coba lakukan ini tanpa penyedia aceoledb cukup impor file csv dengan cara lain seperti berikut:
Menggunakan Driver Teks Microsoft
SELECT * FROM OPENROWSET('MSDASQL',
'Driver={Microsoft Text Driver (*.txt; *.csv)};
DefaultDir=C:\;',
'SELECT * FROM abc.csv')
Menggunakan MASUKKAN MASSAL
CREATE TABLE dbo.MyTable
(ID INTEGER,
A VARCHAR(50),
B VARCHAR(50),
C VARCHAR(50)
)
BULK INSERT dbo.MyTable
FROM 'C:\abc.csv'
WITH
(
FIELDTERMINATOR = ',',
ROWTERMINATOR = '\n'
)
Detail lainnya dalam artikel ini:
- Bagaimana cara mengimpor file csv dengan OPENROWSET?
- T-SQL – Membaca file CSV menggunakan OpenRowSet (Tutorial mendetail)