Importer CSV-fil til SQL Server
Jeg leter etter hjelp til å importere en .csv
-fil til SQL Server ved hjelp av BULK INSERT
, og jeg har noen grunnleggende spørsmål.
Spørsmål:
-
Dataene i CSV-filen kan ha
,
(komma) mellom (f.eks. beskrivelse), så hvordan kan jeg få importen til å håndtere disse dataene? -
Hvis klienten oppretter CSV-filen fra Excel, er dataene som har komma omsluttet av anførselstegn (som i eksemplet nedenfor), så hvordan kan importen håndtere dette?
-
Hvordan sporer vi om noen rader har dårlige data, som importen hopper over? (hopper importen over rader som ikke kan importeres).
Her er et eksempel på en CSV-fil med topptekst:
Name,Class,Subject,ExamDate,Mark,Description
Prabhat,4,Math,2/10/2013,25,Test data for prabhat.
Murari,5,Science,2/11/2013,24,"Test data for his's test, where we can test 2nd ROW, Test."
sanjay,4,Science,,25,Test Only.
og SQL-setning for å importere:
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
TABLOCK
)
168
3
Basert på SQL Server CSV-import
Løsning
Hvis du bruker
,
(komma) som skilletegn, er det ingen måte å skille mellom et komma som feltavslutning og et komma i dataene dine. Jeg ville bruke en annenFIELDTERMINATOR
som||
. Koden vil se ut som og dette vil håndtere komma og enkelt skråstrek perfekt.Løsning
Hvis du' bruker BULK insert, er det ingen måte å håndtere doble anførselstegn, data vil være satt inn med doble anførselstegn i rader. Etter at du har satt inn dataene i tabellen, kan du erstatte de doble anførselstegnene med '` `'.
Løsning
For å håndtere rader som ikke er lastet inn i tabellen på grunn av ugyldige data eller format, kan være håndtere ved hjelp av ERRORFILE property, spesifiser feilfilnavnet, det vil skrive radene. med feil til feilfilen. koden skal se ut som.
Den beste, raskeste og enkleste måten å løse problemet med komma i data er å bruke Excel til å lagre en kommaseparert fil etter å ha satt Windows' listeseparatorinnstilling til noe annet enn et komma (for eksempel et rør). Dette vil da generere en pipe (eller hva som helst) separert fil for deg som du deretter kan importere. Dette er beskrevet her.
Først må du importere CSV-fil til datatabellen
Deretter kan du sette inn bulkrader ved hjelp av SQLBulkCopy