Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Importfehler bei Verwendung von Openrowset

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: