Op basis van SQL Server CSV-import
1) De CSV-bestandsgegevens kunnen
,
. hebben (komma) ertussen (bijvoorbeeld:beschrijving), dus hoe kan ik deze gegevens importeren?
Oplossing
Als je ,
(komma) als scheidingsteken, dan is er geen manier om onderscheid te maken tussen een komma als veldterminator en een komma in uw gegevens. Ik zou een andere FIELDTERMINATOR
gebruiken zoals ||
. De code zou er zo uitzien en deze kan komma's en een enkele schuine streep perfect verwerken.
2) Als de client de csv vanuit Excel maakt, worden de gegevens met komma's ingesloten in
" ... "
(dubbele aanhalingstekens) [zoals het onderstaande voorbeeld] dus hoe kan de import dit aan?
Oplossing
Als u BULK-insert gebruikt, is er geen manier om dubbele aanhalingstekens te verwerken, gegevens worden met dubbele aanhalingstekens in rijen ingevoegd. Nadat u de gegevens in de tabel hebt ingevoegd, kunt u die dubbele aanhalingstekens vervangen door ' '.
update table
set columnhavingdoublequotes = replace(columnhavingdoublequotes,'"','')
3) Hoe houden we bij of sommige rijen slechte gegevens bevatten, welke import wordt overgeslagen? (slaat import niet rijen over die niet kunnen worden geïmporteerd)?
Oplossing
Om rijen af te handelen die niet in de tabel zijn geladen vanwege ongeldige gegevens of indeling, kunt u de ERRORFILE-eigenschap gebruiken, de naam van het foutbestand specificeren, het zal de rowshaving-fout naar het foutbestand schrijven. code eruit zou moeten zien.
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
)