In questo articolo cercheremo di capire cos’è il formato CSV, a cosa serve e come è possibile leggere e creare file di questo tipo.
Indice
Premessa: un caso pratico di utilizzo di CSV nel lavoro di sviluppatore
Alcuni giorni fa ho effettuato una call con i commerciali e gli sviluppatori di un’azienda specializzata nella realizzazione di CRM (Customer Relationship Management) in Cloud, per organizzare la migrazione di un’applicazione presso la loro infrastruttura. Parlando della fase di esportazione dei dati dal loro database MySQL, accessibile in questo caso solo via SSH, ho detto loro che avrei potuto effettuare l’invio dei dati in SQL o in un altro formato eventualmente più adatto alla piattaforma di destinazione. La risposta è stata “Sarebbe possibile disporre del dataset in un file CSV?”.
Cosa sono i file CSV
Per capire il motivo di questa richiesta è necessario ricordare che, tra i tanti formati disponibili per lo scambio di dati, a livello strutturale il CSV (Comma-Separated Values) è uno dei più semplici da utilizzare per la rappresentazione di informazioni sotto forma di tabelle e quindi, almeno potenzialmente, può essere utilizzato per le procedure di esportazione/importazione dati da database.
Il formato CSV prevede la generazione di un comune file di testo nel quale i dati vengono separati tramite virgole (o altri caratteri) e ritorni a capo che consentono di distinguere, rispettivamente, il contenuto delle colonne e delle righe, ricreando la struttura logica di una tabella.
Un semplice esempio di file CSV
Per proporre un esempio di facile comprensione è possibile partire da una tabella come quella mostrata di seguito:
Comune | CAP | Provincia | Regione |
---|---|---|---|
Monserrato | 09042 | Cagliari | Sardegna |
Vasto | 66054 | Chieti | Abruzzo |
Paese | 31038 | Treviso | Veneto |
Campodimele | 04020 | Latina | Lazio |
Il contenuto del file CSV risultante dall’esportazione dei dati elencati in precedenza potrebbe essere il seguente:
Comune,CAP,Provincia,Regione Monserrato,09042,Cagliari,Sardegna Vasto,66054,Chieti,Abruzzo Paese,31038,Treviso,Veneto Campodimele,04020,Latina,Lazio
Come è possibile vedere la sua struttura è molto semplice:
- a ciascuna riga (tranne la prima dedicata ai nomi dei campi) corrisponde un record della tabella;
- i valori dei diversi campi sono separati tramite una virgola;
- le diverse righe sono contrassegnate da un semplice ritorno a capo.
File CSV più complessi
CSV non è però un formato standard pertanto non esistono delle specifiche precise per la formattazione dei dati contenuti all’interno dei file di questo tipo. Se tale caratteristica da un lato rappresenta uno svantaggio (una formattazione non universale potrebbe creare dei problemi di portabilità) dall’altro offre una certa libertà per quanto riguarda le modalità con cui si possono rappresentare dati di diverso tipo e consistenza.
Quella che abbiamo appena visto è la forma più semplice per un file CSV. E’ molto frequente che i dati di ciascun campo siano delimitati da apici (‘) o doppi apici (“): così facendo è possibile utilizzare il carattere virgola anche all’interno dei singoli campi senza che questo venga interpretato come il delimitatore del campo stesso.
Facciamo un altro esempio partendo da questa tabella di dati in cui sono rappresentati alcuni contatti:
Nome e Cognome | Indirizzo | Comune | CAP | Provincia |
---|---|---|---|---|
Mario Rossi | Via Garibaldi, 123 | Monserrato | 09042 | Cagliari |
Carlo Bianchi | Via Cavour, 24 | Vasto | 66054 | Chieti |
Giuseppe Verdi | Via XX Settembre, 36 | Paese | 31038 | Treviso |
Come è possibile notare nel secondo campo (Indirizzo) il carattere virgola è utilizzato per separare la via dal numero civico.
Vediamo, quindi, come potremmo rappresentare questi dati sotto forma di file CSV:
'Nome e Cognome','Indirizzo','Comune','CAP','Provincia' 'Mario Rossi','Via Garibaldi, 123','Monserrato','09042','Cagliari' 'Carlo Bianchi','Via Cavour, 24','Vasto','66054','Chieti' 'Giuseppe Verdi','Via XX Settembre, 36','Paese','31038','Treviso'
Come potete vedere i valori dei singoli campi sono racchiusi dentro ad apici e questo ci consente di rappresentare la virgola senza che questa venga interpretata come separatore.
Al posto dell’apice avremmo potuto utilizzare il doppio apice: ciò sarebbe stato utile, ad esempio, qualora il carattere apice (esattamente come la virgola) fosse stato presente in qualche valore, ad esempio:
Nome e Cognome | Indirizzo | Comune | CAP | Provincia |
---|---|---|---|---|
Gabriele D’Annunzio | Corso Gabriele Manthone, 116 | Pescara | 65100 | Pescara |
In questo caso il carattere doppio apice sembra più adatto in quanto consente di presenrvare il carattere apice utilizzato nel nome senza creare confusioni:
"Nome e Cognome","Indirizzo","Comune","CAP","Provincia" "Gabriele D'Annunzio","Corso Gabriele Manthone, 116","Pescara","65100","Pescara"
Supponiamo ora di dover rappresentare dei dati che, al loro interno, prevedono sia apici che doppi apici… in questo caso, non essendo possibile scegliere un terzo carattere bisognerà procedere raddoppiando i doppi apici già presenti nel valore. Facciamo un esempio.
Opera | Scena | Personaggio | Battuta |
---|---|---|---|
Amleto | Atto terzo, scena prima | Amleto | “Essere, o non essere” questo è il dilemma: se sia più nobile nella mente soffrire colpi di fionda e dardi d’oltraggiosa fortuna o prender armi contro un mare d’affanni e, opponendosi, por loro fine? |
La sua rappresentazione in CSV è la seguente:
"Opera","Scena","Personaggio","Battuta" "Amleto","Atto terzo, scena prima","Amleto","""Essere, o non essere"" questo è il dilemma: se sia più nobile nella mente soffrire colpi di fionda e dardi d'oltraggiosa fortuna o prender armi contro un mare d'affanni e, opponendosi, por loro fine?"
Come potete vedere le virgolette del campo “Battuta” sono state raddoppiate al fine di non confondere l’interprete del file CSV ed evitare che le identificasse come dei delimitatori di campo.
Come creare e aprire un file CSV
Le poche regole per la stesura di un file CSV sono state descritte ampiamente nei paragrafi precedenti e, come è possibile osservare, sono anche abbastanza flessibili. Ne consegue che per la creazione di un documento di questo tipo è sufficiente utilizzare un comune editor di testo come per esempio il Blocco Note di Windows, Nano o Gedit su Linux o TexEdit su macOS.
Alcuni di questi software, inoltre, sono multipiattaforma e possono essere utilizzati su diversi sistemi operativi.
CSV è però principalmente uno strumento per l’esportazione e difficilmente ci si troverà a dover scrivere un file di questo tipo “a mano”, più probabilmente esso sarà il risultato della conversione di una tabella creata con altre applicazioni (come per esempio Excel di Microsoft, Calc di LibreOffice o i fogli di lavoro di Google Documenti).
Esportare/Aprire dati CSV con Microsoft Excel
Su Excel, ad esempio, una tabella come la seguente:
può essere salvata in formato CSV tramite il percorso “File > Salva con nome…” che, scegliendo tra le voci offerte dal menu di selezione “Salva come”, mette a disposizione l’opzione “CSV UTF-8 (delimitato dalla virgole) (*.csv)” da confermare cliccando su “Salva”.
Per aprire un file CSV in Excel si deve seguire invece il percorso “File > Apri” e poi selezionare il documento di proprio interesse. Fatto questo si aprirà la finestra “Importazione guidata testo” che permette di scegliere il tipo di file che meglio si adatta ai dati mettendo a disposizione due opzioni:
- Delimitato: con campi separati da virgole o tabulazioni;
- Larghezza fissa: con compi allineati in colonne e separati da spazi.
Nel caso dei file CSV l’opzione migliore è quindi la prima che, plausibilmente, apparirà come preselezionata.
Nella stessa finestra è presente anche il pulsante di spunta “Dati con intestazioni” da selezionare per indicare ad Excel che la tabella rappresentata nel documento contiene i nomi dai campi.
Segue un ulteriore passaggio attraverso cui indicare il delimitatore utilizzato per la separazione dei dati, nella maggior parte dei casi quest’ultimo è la “virgola” ma l’applicazione permette di definire anche dei delimitatori alternativi (tabulazione, punto e virgola, spazio o eventuali personalizzazioni).
Fatto questo non rimane altro che selezionare la voce “Nel foglio di lavoro esistente” per definire la destinazione dei dati e si potrà finalmente visualizzare l’esito dell’importazione effettuata.
Esportare/Aprire dati CSV con LibreOffice Calc
Su Calc di LibreOffice la procedura è sostanzialmente la stessa appena descritta per Microsoft Excel, il passaggio relativo al menù per la selezione del formato richiede però la scelta dell’opzione “Testo CSV (*.csv)”.
Quando invece si desidera aprire un file CSV con la medesima applicazione è sufficiente cliccare su “File” e successivamente su “Apri…” per poi selezionare il documento da visualizzare. Si aprirà così una finestra nella quale Calc richiede la codifica di caratteri Unicode da utilizzare per la lettura dei dati (UTF-8 in corrispondenza della sezione “Tipo di carattere” nell’esempio rappresentato dalla figura successiva).
La finestra offre un’anteprima della tabella generata in output una volta cliccato su “OK”. Se essa è corretta, cosa che dovrebbe verificarsi nella maggior parte dei casi, non sarà necessario intervenire sulle altre opzioni.
Se il contenuto della tabella dovese risultare illeggibile si consiglia di intervenire selezionando una codifica alternativa per i caratteri, nel caso in cui invece la disposizione dei dati in tabella non dovesse essere corretta è probabile che l’”Opzione di separazione” scelta non sia quella ottimale. La figura seguente mostra ad esempio un’anteprima non ordinata della tabella a causa del fatto che la virgola non è stata selezionata come separatore:
Esportare/Aprire dati CSV con Google Documenti
Sui Fogli di Lavoro di Google il percorso da seguire per l’esportazione in CSV è infine “File > Scarica > Valori separati da virgola (.csv, foglio corrente)”.
Fatto questo si potrà scaricare il file della tabella in formato CSV sul proprio dispositivo.
Per aprire un file CSV è necessario invece lanciare l’applicazione e seguire il percorso “File > Apri”. Si aprirà così la finestra di dialogo “Apri un file” tramite la quale è possibile selezionare “Carica” per importare il documento dal proprio dispositivo nel caso in cui esso non sia già presente sullo storage di GDrive.
Se il file CSV caricato è stato correttamente formattato il sistema sarà in grado di aprirlo automaticamente restituendo la tabella e i dati al suo interno.
Conclusioni
In questo articolo abbiamo visto cosa sono i file CSV, a cosa servono e come sono strutturati. Abbiamo anche avuto modo di vedere come crearli e gestirli con alcune popolari applicazioni per la gestione dei fogli di calcolo.
Se lavorate con i database, sicuramente, vi troverete, prima o poi, ad avere a che fare con CSV in quanto, come detto nell’introduzione di questo articolo, è un formato assai comunemente utilizzato per l’esportazione e l’importazione di dati.