De oorzaak van het probleem is de Oledb-provider
Bij het importeren van csv-bestanden of Excel-bestanden met de kolom gemengde gegevenstypen, worden niet-dominante typen vervangen door null
. (Oledb of Ace.Oledb gebruiken )
Oplossingen
U kunt een tijdelijke oplossing doen door een eerste rij toe te voegen die tekenreekswaarden bevat en deze vervolgens te verwijderen nadat het kopiëren is voltooid
ID,A,B,C
0,a,a,a
1,12,hh,i
2,ab12,tt,b
3,2,aa,o
4,bc12,ee,l
En het lost het probleem op bij gebruik van IMEX=1
Hiermee worden kolommen als tekenreeks en ID-kolom als nummer gelezen. (0 wordt gebruikt)
Of voeg HDR=NO
. toe eigenschap naar verbindingsreeks zodat de koptekst de eerste geïmporteerde regel is (alle waarden zijn tekenreeksen)
Lees meer over gemengde gegevenstypen in deze artikel
Andere methoden
Of probeer dit te bereiken zonder aceoledb-provider, importeer gewoon het csv-bestand op een andere manier zoals het volgende:
Microsoft Text Driver gebruiken
SELECT * FROM OPENROWSET('MSDASQL',
'Driver={Microsoft Text Driver (*.txt; *.csv)};
DefaultDir=C:\;',
'SELECT * FROM abc.csv')
BULK INSERT gebruiken
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'
)
Andere details in deze artikelen:
- Hoe importeer ik een csv-bestand met OPENROWSET?
- T-SQL – CSV-bestanden lezen met OpenRowSet (Een gedetailleerde tutorial)