sql >> Database teknologi >  >> RDS >> Sqlserver

Importfejl ved brug af Openrowset

Årsagen til problemet er Oledb-udbyderen

Når du importerer csv-fil eller excel-filer med blandede datatyper kolonne, vil den erstatte ikke-dominerende typer med null . (Brug af Oledb eller Ace.Oledb )

Løsninger

Du kan løse problemet ved at tilføje en første række, der indeholder strengværdier, og derefter fjerne den, efter at impreringen er færdig

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

Og det vil løse problemet, hvis du bruger IMEX=1

Dette vil læse kolonner som streng og ID-kolonne som nummer. (0 bruges)

Eller tilføj HDR=NO egenskab til forbindelsesstreng, så overskriften er den første linje, der importeres (alle dens værdier er strenge)

Læs mere om blandede datatyper i denne artikel

Andre metoder

Eller prøv at opnå dette uden aceoledb-udbyder, bare importer csv-fil på anden måde som følgende:

Brug af Microsoft Text Driver

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

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

Andre detaljer i disse artikler:



  1. Hvordan tæller man antallet af kolonner i en tabel ved hjælp af SQL?

  2. docker-compose up &&docker-compose build:fejl med PostgreSQL

  3. MySql FEJL! Serveren afsluttede uden at opdatere PID-fil

  4. Sådan lukkes sårbarhedsgabet i PostgreSQL