Baseret SQL Server CSV-import
1) CSV-fildataene kan have ,
(komma) imellem (Ex:description), så hvordan kan jeg få import til at håndtere disse data?
Løsning
Hvis du bruger ,
(komma) som afgrænsning, så er der ingen måde at skelne mellem et komma som feltterminator og et komma i dine data. Jeg ville bruge en anden FIELDTERMINATOR
som ||
. Koden ville se ud, og denne vil håndtere komma og enkelt skråstreg perfekt.
2) Hvis klienten opretter csv'en fra excel, er de data, der har komma, omgivet af " ... "
(doble anførselstegn) [som nedenstående eksempel] så hvordan kan importen håndtere dette?
Løsning
Hvis du bruger BULK insert, er der ingen måde at håndtere dobbelte anførselstegn, data vil blive indsat med dobbelte anførselstegn i rækker. Efter indsættelse af data i tabellen kan du erstatte disse dobbelte anførselstegn med ' '.
update table
set columnhavingdoublequotes = replace(columnhavingdoublequotes,'"','')
3) Hvordan sporer vi, om nogle rækker har dårlige data, hvilken import springer over? (springer import over rækker, der ikke kan importeres)?
Løsning
For at håndtere rækker, der ikke er indlæst i tabellen på grund af ugyldige data eller format, kunne behandles ved hjælp af ERRORFILE-egenskaben, angiv fejlfilnavnet, det vil skrive rowshaving-fejlen til fejlfilen. kode skal se ud.
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
)