Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Грешка при импортиране при използване на Openrowset

Причината за проблема е доставчикът Oledb

Когато импортирате csv файл или excel файлове с колона със смесени типове данни, той ще замени недоминиращите типове с null . (Използване на Oledb или Ace.Oledb )

Заобиколни решения

Можете да направите някакво заобиколно решение, като добавите първи ред, който съдържа низови стойности, след което го премахнете, след като impirting приключи

ID,A,B,C
0,a,a,a
1,12,hh,i
2,ab12,tt,b
3,2,aa,o
4,bc12,ee,l

И това ще реши проблема, ако използвате IMEX=1

Това ще прочете колоните като низ и ID колоната като число. (използва се 0)

Или добавете HDR=NO свойство към низ за връзка, така че заглавката да е първия импортиран ред (всички негови стойности са низове)

Прочетете повече за смесените типове данни в този статия

Други методи

Или опитайте да постигнете това без доставчик на aceoledb, просто импортирайте csv файл по друг начин, като следния:

Използване на Microsoft Text Driver

SELECT * FROM OPENROWSET('MSDASQL',
'Driver={Microsoft Text Driver (*.txt; *.csv)};
DefaultDir=C:\;',
'SELECT * FROM abc.csv')

Използване на BULK INSERT

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' 
  )

Други подробности в тези статии:



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Свържете R към машина за база данни на SQL Server

  2. Как да конвертирате празни пространства в нулеви стойности, като използвате SQL Server?

  3. VMware CPU Hot Plug vNUMA Ефекти върху SQL Server

  4. Как да импортирате DBF файл в SQL Server

  5. Време за изчакване на връзката за SQL сървър