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 :

Problème : header("Location ... ne marche pas
Opérations sur les dates en PHP
Formulaire de paiement paypal en PHP
Affectation conditionnelle sous PHP
Tester format de chaîne style mot de passe
Instruction SWITCH
Parcourir les images d'un répertoire en PHP
Parcourir un tableau en php - pense bête
Espaces parasites rajoutés lors d'un envoi de mail
Script de Backup / Sauvegarde de la Base Mysql 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