Die Problemursache ist der Oledb-Anbieter
Beim Importieren von CSV-Dateien oder Excel-Dateien mit Spalten mit gemischten Datentypen werden nicht dominante Typen durch null
ersetzt . (Oledb oder Ace.Oledb verwenden )
Problemumgehungen
Sie können eine Problemumgehung schaffen, indem Sie eine erste Zeile hinzufügen, die Zeichenfolgenwerte enthält, und sie dann entfernen, nachdem das Impirieren abgeschlossen ist
ID,A,B,C
0,a,a,a
1,12,hh,i
2,ab12,tt,b
3,2,aa,o
4,bc12,ee,l
Und es wird das Problem beheben, wenn IMEX=1
verwendet wird
Dadurch werden Spalten als Zeichenfolge und die ID-Spalte als Zahl gelesen. (0 wird verwendet)
Oder fügen Sie HDR=NO
hinzu -Eigenschaft in die Verbindungszeichenfolge, sodass die Kopfzeile die erste importierte Zeile ist (alle ihre Werte sind Zeichenfolgen)
Lesen Sie mehr über gemischte Datentypen in diesem artikel
Andere Methoden
Oder versuchen Sie, dies ohne den aceoledb-Anbieter zu erreichen, importieren Sie einfach die CSV-Datei auf andere Weise wie folgt:
Microsoft Text Driver verwenden
SELECT * FROM OPENROWSET('MSDASQL',
'Driver={Microsoft Text Driver (*.txt; *.csv)};
DefaultDir=C:\;',
'SELECT * FROM abc.csv')
BULK INSERT verwenden
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'
)
Weitere Details in diesen Artikeln:
- Wie importiert man eine CSV-Datei mit OPENROWSET?
- T-SQL – CSV-Dateien mit OpenRowSet lesen (Ein ausführliches Tutorial)