Importare un file csv in Mysql con PHP


Importare i file csv è sempre una rogna, se non abbiamo accesso diretto alla console di Mysql come post precedente: Importare un file CSV in una tabella di MySql tramite shell, possiamo utilizzare uno script php o di altro linguaggio, vediamo in PHP come funziona.
Apriamo il file:
$fcontents = file ('./spreadsheet.csv');

Cicliamo nel file fino alla fine di quest’ultimo
for($i=0; $i<sizeof ($fcontents); $i++) {

Individuiamo le linee ed i campi, in questo casi i campi sono separati da tab (\t)

$line = trim($fcontents[$i]);
$arr = explode("\t", $line);

Adesso non resta che generare SQL adatto per inserire i dati in mysql:

$sql = "insert into TABELLA values ('".
implode("','", $arr) ."')";
mysql_query($sql);

Dove per tabella si intende il nome della tabella nel DB, la tabella in questione deve avere lo stesso numero di campi, indipendentemente dal nome dei campi.

Ricapitolando lo script per intero è questo:
$fcontents = file ('./spreadsheet.csv');
for($i=0; $i<sizeof ($fcontents); $i++) {
   $line = trim($fcontents[$i]);
   $arr = explode("\t", $line);
   $sql = "insert into TABELLA values ('".
     implode("','", $arr) ."')";
   mysql_query($sql);
}

Via ModWest
On Air: God Save the Queen (Sex Pistols)

Importare un file csv in Mysql con PHP ultima modifica: 2008-06-24T11:11:48+00:00 da Enrico

4 Comments.

  1. Enrico non per fare il pignolo della situazione ma il file lo rinominerei in .csv per evitare equivoci.

    In questo modo ti pari da possibili domande su file di Office 2007. O documenti non proprio standard.

  2. Vedi che se non avessi i miei lettori farei un mucchi di baggianate, many tnx, corretto

  3. Grazie mille per questo articolo, non puoi immaginare quanto mi √® stato utile, senti scusa se ti do fastidio ma se volessi mettere tutto cio’ ke sta tra una virgola ed un altra in delle variabili come potrei fare ?

    cioè queste cose prese dal csv

    ciccio, pallo, postina, sup -> var diverse tra loro in php

    ???????????????

    Grazie mille in anticipo

  4. Giacomo Odoardi

    Scusa ma se nel csv che devo importare ho lettere accentate (nella forma vocale+apostrofo) il tuo codice funziona?Io c’ho provato e non mi va.
    Come si può fare?
    Grazie
    Ciao