Å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:
- Hvordan importeres csv-fil med OPENROWSET?
- T-SQL – Læs CSV-filer ved hjælp af OpenRowSet (En detaljeret selvstudie)