Importa un file CSV in una tabella in un database MySQL

Gustavo du Mortier 1 aprile 2022
  1. LOAD DATA INFILE SQL per importare CSV in MySQL
  2. Usa HeidiSQL per importare CSV in MySQL
Importa un file CSV in una tabella in un database MySQL

Questo articolo del tutorial presenterà due metodi per importare dati da un file di valori separati da virgole (CSV) in un database MySQL e inserirlo in una tabella.

Introdurremo diversi approcci per importare un file CSV in MySQL. Questa attività può essere eseguita a livello di programmazione, eseguendo una serie di comandi SQL; o in modo interattivo, utilizzando la finestra di dialogo di importazione file di un client grafico MySQL, come HeidiSQL.

LOAD DATA INFILE SQL per importare CSV in MySQL

Vediamo prima come importare il file CSV in modo programmatico utilizzando l’istruzione LOAD DATA INFILE SQL.

Prima di poter importare il file, sarà necessario creare la tabella contenente i dati importati. Supponi che il tuo file CSV contenga informazioni sul libro, suddivise in campi ISBN, Titolo, Autore e ListPrice. Per creare una tabella di questo tipo, è necessario eseguire un comando come questo:

CREATE TABLE BooksCSV (
    ISBN VARCHAR(255) NULL,
    title VARCHAR(255) NULL,
    author VARCHAR(255) NULL,
    ListPrice VARCHAR(255) NULL
);

Si consiglia che tutti i campi ammettano valori NULL e che la tabella non abbia una chiave primaria, poiché non è noto in anticipo se i dati nel file CSV sono completi e normalizzati.

Un’altra raccomandazione è quella di utilizzare solo i campi VARCHAR anche nel caso di dati numerici, per evitare errori nel processo dovuti a dati formattati in modo errato nel file. Dopo aver importato i dati, è possibile pulirli direttamente nel database, leggendo le righe della tabella ed effettuando le necessarie convalide e correzioni.

Una volta ottenuta la tabella di destinazione per i dati, è necessario identificare il percorso del file CSV. Supponiamo che il percorso completo del file sia C:\csvdata\books.csv. Quindi, per importare quel file nella tua tabella, dovresti eseguire il comando:

LOAD DATA
INFILE 'c:/csvdata/books.csv'
INTO TABLE BooksCSV ` 

L’istruzione LOAD DATA INFILE richiede di specificare il file sorgente e la tabella di destinazione. Facoltativamente, puoi anche specificare altri parametri, come il carattere separatore di campo, il qualificatore di testo e l’esistenza di righe di intestazione.

Nell’esempio seguente, i parametri aggiunti specificano che i campi sono separati da virgole, che le stringhe sono racchiuse tra virgolette doppie e che la prima riga deve essere ignorata perché contiene intestazioni di colonna.

LOAD DATA
INFILE 'c:/csvdata/books.csv'
INTO TABLE BooksCSV 
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
IGNORE 1 ROWS;

Ora che sai come importare un file CSV in MySQL a livello di programmazione.

Usa HeidiSQL per importare CSV in MySQL

Vediamo come farlo in modo interattivo utilizzando un client grafico MySQL, come HeidiSQL.

I passaggi sono gli stessi che abbiamo visto sopra:

  • Crea la tabella
  • Importa il contenuto del file in esso.

Per creare la tabella utilizzando HeidiSQL, è necessario collegare il client al server MySQL e selezionare il database in cui si desidera importare i dati. Quindi fare clic con il pulsante destro del database e selezionare l’opzione Create New - Table.

mysql import csv screenshot 1

Devi inserire il nome della tabella nel campo corrispondente e aggiungere le colonne. Per aggiungere una colonna, fai clic sul pulsante + e inserisci il suo nome e il tipo di dati.

In questo esempio, la tabella si chiama BooksCSV e i campi sono gli stessi che abbiamo usato nell’esempio precedente.

Una volta terminata l’aggiunta di colonne, fare clic su Save per creare la tabella nel database.

Dopo aver creato la tabella, puoi importare i dati dal file CSV. Ma prima di avviare il processo di importazione, è necessario abilitare il caricamento dei dati locali sia sui componenti client che server modificando i parametri di avvio di ciascuno. Ci sono alcune considerazioni sulla sicurezza da tenere in considerazione quando si abilita il caricamento dei dati locali. Per saperne di più su di loro, leggi questo articolo dalla documentazione ufficiale di MySQL.

Quando sei pronto per importare il file CSV, vai al menu Strumenti in HeidiSQL e seleziona l’opzione Importa file CSV. È necessario specificare il percorso del file CSV da importare e selezionare il database e la tabella in cui si desidera inserire i dati importati. Puoi deselezionare i campi della tabella se nella tabella sono presenti più campi quanti sono nel file. Infine, fai clic su Import! e il processo inizierà.

mysql import csv screenshot 2

Per eseguire l’importazione, l’interfaccia grafica emette lo stesso comando LOAD DATA che abbiamo descritto in precedenza per l’opzione programmatica, quindi il risultato finale è praticamente lo stesso: la tabella del database verrà popolata con i dati letti dal file CSV.

Per ulteriori informazioni sull’utilizzo dell’istruzione LOAD DATA, consultare questo articolo dalla documentazione ufficiale di MySQL.