sql >> Databasteknik >  >> RDS >> Sqlserver

Importera CSV-fil till SQL Server

Baserad SQL Server CSV-import

1) CSV-filens data kan ha , (komma) emellan (Ex:beskrivning), så hur kan jag få import att hantera dessa data?

Lösning

Om du använder , (komma) som avgränsare, så finns det inget sätt att skilja mellan kommatecken som fältavslutning och kommatecken i din data. Jag skulle använda en annan FIELDTERMINATOR som || . Koden skulle se ut och detta kommer att hantera kommatecken och enstaka snedstreck perfekt.

2) Om klienten skapar csv från excel så är data som har komma omslutna i " ... " (dubbla citattecken) [som exemplet nedan] så hur kan importen hantera detta?

Lösning

Om du använder BULK infogning finns det inget sätt att hantera dubbla citattecken, data kommer att infogas med dubbla citattecken i rader. efter att ha infogat data i tabellen kan du ersätta dessa dubbla citattecken med ' '.

update table
set columnhavingdoublequotes = replace(columnhavingdoublequotes,'"','')

3) Hur spårar vi om vissa rader har dålig data, vilken import hoppar över? (hoppar import över rader som inte är importerbara)?

Lösning

För att hantera rader som inte laddas in i tabellen på grund av ogiltiga data eller format, skulle kunna behandlas med ERRORFILE-egenskapen, ange felfilnamnet, det kommer att skriva radshavingsfelet till felfilen. koden ska se ut.

BULK INSERT SchoolsTemp
    FROM 'C:\CSVData\Schools.csv'
    WITH
    (
    FIRSTROW = 2,
    FIELDTERMINATOR = ',',  --CSV field delimiter
    ROWTERMINATOR = '\n',   --Use to shift the control to next row
    ERRORFILE = 'C:\CSVDATA\SchoolsErrorRows.csv',
    TABLOCK
    )


  1. Problem med att bygga cx_Oracle - libclntsh.so.11.1 => hittades inte

  2. Upptäck hur kardinalitet påverkar prestanda

  3. Ramen för ett Apache Spark Job Run!

  4. Subtrahera år från ett datum i PostgreSQL