sql >> Database >  >> RDS >> Sqlserver

Importfout met Openrowset

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:



  1. SQL - Meerdere soortgelijke zoekopdrachten combineren

  2. Hoe de gegevens te krijgen met behulp van>=AND <=in een 12-uurs tijdformaat in php/mysql?

  3. Hoe alle fouten van alle SSIS-pakketten in een oplossing te krijgen?

  4. PHP-weergavenaam van ingelogde gebruiker