In breve: il CSV sembra il formato dati più semplice possibile, ed è esattamente per questo che piccole incoerenze — una virgola vagante dentro un campo di testo non tra virgolette, un delimitatore non corrispondente, un BOM nascosto — fanno fallire un'importazione o disallineare silenziosamente le colonne. Abbina questa guida a Encoding Converter, Duplicate Finder, Remove Extra Spaces e Character Counter.
Le regole reali del CSV sono definite in RFC 4180, anche se in pratica la maggior parte del CSV reale la segue solo in modo approssimativo — che è esattamente la fonte della maggior parte dei problemi di importazione.
Dove falliscono davvero le importazioni CSV
Il problema centrale: una virgola è sia il delimitatore di colonna sia un carattere che può legittimamente comparire dentro un campo di testo (un indirizzo, una descrizione di prodotto con "Small, Medium, Large" al suo interno). La risposta di RFC 4180 è la quotatura — un campo contenente una virgola deve essere racchiuso tra virgolette doppie, e una virgoletta doppia letterale dentro un campo tra virgolette viene escapata raddoppiandola (""). Software che esporta CSV senza seguire questa regola produce file dove una singola virgola non tra virgolette sposta silenziosamente ogni colonna successiva di uno.
I delimitatori non sono universali
Separato da virgola è l'ipotesi predefinita, ma molti file reali usano invece punto e virgola — particolarmente comune in locali dove la virgola è già il separatore decimale per i numeri, il che rende ambiguo riutilizzarla come delimitatore di colonna. Un CSV che si apre come un'unica colonna non divisa in un foglio di calcolo sta molto spesso semplicemente usando il delimitatore sbagliato rispetto all'ipotesi di quello strumento, non è davvero rotto.
Codifica e il BOM invisibile
Un byte order mark (BOM) UTF-8 — tre byte invisibili all'inizio di un file — viene aggiunto da alcuni strumenti (notoriamente Excel in esportazione) per segnalare la codifica, ma non tutti i parser lo rimuovono automaticamente. Se lasciato, può attaccarsi invisibilmente al nome dell'intestazione della prima colonna, così una ricerca di una colonna chiamata letteralmente name fallisce perché l'intestazione reale è name con un carattere invisibile anteposto — un bug genuinamente difficile da individuare a occhio.
Un flusso di lavoro di pulizia pre-importazione
- Apri il file grezzo come testo semplice prima (non in un foglio di calcolo, che interpreta automaticamente e può nascondere la struttura reale) per controllare il delimitatore e la quotatura reali.
- Controlla i primi byte per un BOM se le ricerche per nome colonna falliscono misteriosamente.
- Cerca specificamente virgole non tra virgolette dentro quelli che dovrebbero essere singoli campi di testo — la causa più comune di disallineamento delle colonne.
- Controlla una nuova riga finale o una riga vuota finale, che alcuni strumenti di importazione contano come un record finale rotto.
- Esegui Duplicate Finder su una colonna chiave (come un ID o email) prima dell'importazione se record duplicati causerebbero problemi a valle.
Errori comuni da evitare
- Presumere che ogni CSV usi le virgole — i file delimitati da punto e virgola sono comuni e sembrano identici finché non provi a dividere sul carattere sbagliato.
- Modificare il CSV in un'app foglio di calcolo, che riformatta silenziosamente le date, rimuove gli zeri iniziali, e può ricodificare il testo in modi che non corrispondono all'originale.
- Non controllare un BOM iniziale quando le ricerche basate su intestazione falliscono senza motivo visibile.
- Ignorare virgole non tra virgolette dentro campi di testo libero finché l'importazione produce colonne visibilmente spostate.
La maggior parte dei fallimenti di importazione CSV non riguarda davvero i dati — riguarda le ipotesi di un parser (delimitatore, codifica, quotatura) che non corrispondono a ciò che il file contiene davvero.