Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Kesalahan impor menggunakan Openrowset

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:



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL Server 2012 :ekstrak grup Regex

  2. Konfigurasikan Lucene.Net dengan SQL Server

  3. SQL Server 2012 Paket Layanan 1 &Pembaruan Kumulatif 1

  4. Pisahkan string yang dipisahkan koma dan sisipkan ke tabel (int)

  5. Masalah dengan Fungsi Jendela di SQL Server 2008 R2