Le code suivant permet de lire un fichier .csv et d’insérer les données dans une table Mysql.
Les colonnes du fichier .csv doivent correspondre aux champs de la talbe Mysql.
Fonction de lecture de fichier .csv en PHP
En entrée de la fonction, on passe le nom du fichier .csv ainsi que le format du séparateur des données dans ce fichier.
En sortie de la fonction on obtient un tableau contenant les données du fichier .csv.
<?php function lire_csv($nom_fichier, $separateur =";"){ $row = 0; $donnee = array(); $f = fopen ($nom_fichier,"r"); $taille = filesize($nom_fichier)+1; while ($donnee = fgetcsv($f, $taille, $separateur)) { $result[$row] = $donnee; $row++; } fclose ($f); return $result; } ?>
Fonction préparant les requêtes d’insertion de données .csv dans base Mysql
En entrée l’on passe les données csv (fonction précédente) et le nom de la table Mysql qui doit être remplie.
En sortie on obtient la liste des requêtes d’insertion dans la base de données.
<?php function requete_insert($donnees_csv, $table){ $insert = array(); $i = 0; while (list($key, $val) = @each($donnees_csv)){ /*On ajoute une valeur vide ' ' en début pour le champs d'auto-incrémentation s'il existe, sinon enlever cette valeur*/ if ($i>0){ $insert[$i] = "INSERT into ".$table." VALUES(' ',".$id_user.",'" $insert[$i] .= implode("','", $val); $insert[$i] .= "')"; }$i++; } return $insert; } ?>
Lecture du fichier .csv et insertion des données dans la base MySQL
Lancement de la lecture du fichier nom_de_mon_fichier.csv et insertion des données dans la table Mysql nom_de_ma_table_sql
<?php $fichier=nom_de_mon_fichier.csv $nom_table = "nom_de_ma_table_sql"; $donnees = lire_csv($fichier); $requetes= requete_insert($donnees, "$nom_table"); foreach($requetes as $requete) { $result = mysql_query($requete) or die('Erreur SQL !'. $requete.'<br />'.mysql_error()); } ?>
Laisser un commentaire
Participez-vous à la discussion?N'hésitez pas à contribuer!