le MEMO du WEB développeur
••• PHP •••  Liste des Mémos, astuces et bonnes pratiques

Lire un fichier .csv et l'enregistrer en base de données Mysql

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());
  }
?>

 

publié le 03/04/2013 par Memo Web
Commentaire :
La variable $id_user n'est pas d�finie dans le code, comment faut t-il la d�finir svp ?
par inconnu, le 04/12/2015
probl�me dans la fonction requete_insert()
par inconnu, le 10/04/2015
�a marche biennnn merciii ;)
par inconnu, le 27/03/2015
�a marcheeee
par inconnu, le 27/03/2015
Ca ne marche pas non plus chez moi
par inconnu, le 19/03/2015
il manque le ; à la fin de la 7eme ligne de requete_insert(...)
par inconnu, le 07/04/2014
Ca ne marche pas non pas chez moi, il m'affiche ce message ci:
Parse error : syntax error ,unexpected 'insert'(T_VARIABLE) on line 23
par inconnu, le 05/11/2013
j'ai essayé le code fonctionne à merveille
par inconnu, le 28/10/2013
j'ai essayé le code mais ça ne marche pas...
par inconnu, le 29/05/2013
Quel problème rencontrez vous exactement ?
par tarabusk, le 29/05/2013
Commenter le Mémo :

Fonction extract() en PHP
Protection contre les injections HTML XCSS
Les variables à nom "variables" en PHP
Opérations sur les dates: trouver la date précédente ou suivante d'une date donnée
Récupérer l'adresse de la page courante
Les cookies faciles
Foncer ou eclaircir une couleur en PHP
Enlever les balises HTML d'une chaîne en PHP
Convertir un format dateTime Français en format MySQL
Comment formater un grand nombre à l'affichage pour le rendre plus lisible (en PHP)
Ajoutez vos propres Mémos sur MEMO-WEB

Il suffit de vous créer un compte sur le site

Vous pourrez choisir un thème parmis l'une des catégories proposées par MEMO-WEB.

Rédigez votre Mémo.
Après validation par MEMO-WEB, il sera mis en ligne.
Ajouter vos Mémos