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.