Basierend auf SQL Server CSV-Import
1) Die Daten der CSV-Datei können ,
haben (Komma) dazwischen (z. B. Beschreibung), wie kann ich also einen Import durchführen, der diese Daten verarbeitet?
Lösung
Wenn Sie ,
verwenden (Komma) als Trennzeichen, dann gibt es keine Möglichkeit, zwischen einem Komma als Feldabschluss und einem Komma in Ihren Daten zu unterscheiden. Ich würde einen anderen FIELDTERMINATOR
verwenden wie ||
. Der Code würde so aussehen und dieser wird Kommas und einzelne Schrägstriche perfekt handhaben.
2) Wenn der Client die CSV-Datei aus Excel erstellt, werden die Daten, die ein Komma enthalten, in " ... "
eingeschlossen (doppelte Anführungszeichen) [wie im Beispiel unten], wie kann der Import damit umgehen?
Lösung
Wenn Sie die BULK-Einfügung verwenden, gibt es keine Möglichkeit, doppelte Anführungszeichen zu handhaben, Daten werden mit doppelten Anführungszeichen in Zeilen eingefügt. Nachdem Sie die Daten in die Tabelle eingefügt haben, können Sie diese doppelten Anführungszeichen durch „“ ersetzen '.
update table
set columnhavingdoublequotes = replace(columnhavingdoublequotes,'"','')
3) Wie verfolgen wir, ob einige Zeilen fehlerhafte Daten enthalten, die beim Import übersprungen werden? (Überspringt der Import Zeilen, die nicht importiert werden können)?
Lösung
Um Zeilen zu behandeln, die aufgrund ungültiger Daten oder Formate nicht in die Tabelle geladen werden, kann dies mit der ERRORFILE-Eigenschaft behandelt werden, geben Sie den Namen der Fehlerdatei an, es wird den Fehler beim Zeilenverschieben in die Fehlerdatei schreiben. Code sollte so aussehen.
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
)