--Imparando.net--

Come importare dati

Quando si ha la necessità di importare i dati in MySQL il modo più semplice e comodo è quello di ricorrere alla procedura di importazione fornita da phpMyAdmin. Ci sono però dei casi (tipicamente file troppo grossi), nei quali la procedura potrebbe dare vari tipi di errori e allora si può ricorrere alla riga di comando, che in generale permette di risolvere il problema in maniera elegante ed efficiente.

Importazione di file con formato SQL

Questi file al loro interno contengono istruzioni SQL pure, quindi sarebbe sufficiente farli eseguire riga per riga per ottenere il risultato voluto.
Ovviamente se il file è molto grande (ma anche se non è così grande) non è una buona idea procedere con un copia incolla, si possono invece sfruttare le capacità della shell di ridirigere l'input per ottenere il risultato desiderato, tramite un'istruzione come la seguente:

mysql -u root -Dus_export < data_us_export.sql
In questo esempio si è supposto che il proprio database abbia l'utente root senza password, cosa ragionevole in fase di sviluppo, da notare due cose:

Importazione di file con il formato csv

Un altro caso d'uso importante è quello in cui ci si trova ad avere a che fare con un file in formato csv (Comma Separated Value). Questo formato è spesso usato come formato di interscambio di dati tra programmi diversi, essendo molto semplice e supportato praticamente da ogni strumento che maneggia dati. Un esempio tipico potrebbe essere quello che si trova nel file a fondo pagina, dove i dati sono stati recuperati da un sito sotto forma di file di foglio elettronico con estensione xls, sono stati poi convertiti in file csv grazie a LibreOffice Calc e a questo punto si è dovuto procedere all'importazione all'interno di MySQL.
Come prima cosa è necessario creare la tabella all'interno del database, guardando il contenuto del file e assegnando un nome e un tipo ad ogni colonna: nell'esempio presente a fondo pagina le prime due righe sono:

Country;Product;2006;2007;2008;2009;2010;2011;2012;2013;2014;2015
Greenland;Fruits,  frozen juices;0;0;0;0;0;0;22207;0;0;0
In questo file la prima riga è d'intestazione, quindi i nomi dei campi possono essere dati utilizzando quelli già presenti (Country, Product, ecc.), mentre per il tipo e la lunghezza bisogna dare un'occhiata ad alcune righe per capire il tipo e soprattutto, per quanto riguarda le stringhe, la lunghezza: se infatti un campo fosse ad esempio reso come varchar(20) e poi ci fossero dei valori di campi più lunghi, durante l'importazione questi campi sarebbero silenziosamente tagliati.
Dopo aver creato la tabella per l'importazione può essere usata l'istruzione di MySQL LOAD DATA INFILE: questa istruzione è pensata per importare in maniera efficiente grosse quantità di dati e può essere usata all'interno del client a riga di comando. Rimanendo sempre all'esempio mostrato sopra, l'istruzione sarà la seguente:
LOAD DATA INFILE 'data_us_exports_2006_2015.csv' INTO TABLE data
FIELDS TERMINATED BY ';' ENCLOSED BY '"'

In questo caso i campi sono delimitati da ; e il file data_us_exports_2006_2015.csv verrà importato nella tabella data creata in precedenza.

Altro ...

Us exports.zip
Licenza Creative Commons
Didattica di Alessandro Bugatti è distribuito con Licenza Creative Commons Attribuzione - Non commerciale - Non opere derivate 3.0 Unported.