IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Importation .csv dans mysql


Sujet :

PHP & Base de données

  1. #1
    Membre confirmé
    Inscrit en
    Août 2010
    Messages
    168
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 168
    Par défaut Importation .csv dans mysql
    Bonsoir,

    Je réalise actuellement un site Internet dans lequel je dois pouvoir mettre à jours les tables de la BDD à partir de fichier CSV.

    J'ai donc naturellement utilisé la fonction LOAD DATA INFILE. Ceci marchait très bien il y a encore 2 semaine. Mais aujourd'hui cela ne fonctionne plus.

    Voici mon code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    $infosfichier = pathinfo($_FILES[$type_choisis[$i]]['name']);
            $extension_upload = $infosfichier['extension'];
            $extensions_autorisees = array('csv');
            if (in_array($extension_upload, $extensions_autorisees))
            {
    			move_uploaded_file($_FILES[$type_choisis[$i]]['tmp_name'], '../CSV/'. $type_choisis[$i] .'.csv');
    			//mysql_query('TRUNCATE TABLE '. $type_choisis[$i]);
    			mysql_query("
    			LOAD DATA LOCAL INFILE '../CSV/". $type_choisis[$i] .".csv'
    			REPLACE
    			INTO TABLE ". strtolower($type_choisis[$i]) ."
    			FIELDS 
    			TERMINATED BY ';'
    			LINES
    			TERMINATED BY '\n'
    			IGNORE 2 LINES
    			") or die(mysql_error());
    			$ok=true;
    			//header("Location:../admin/index.php?m=tab");
            }
    Grâce à un input type=file je demande à l'utilisateur de choisir un fichier CSV. $type_choisis[$i] correspond as la table qui doit être mise à jour.

    LE die(mysql_error()) ne me renvoit rien comme si tout c'était bien passé mais lorsque je vais sur phpmyadmin je constate que la table reste désespérément vide!!

    Voila je ne comprend pas du tout d'où vient le problème étant donné que ceci marchait très bien il y a peu.

    Si vous avez la moindre question n'hésitez pas

    En esperant une réponse de quelqu'un.

    Chipss,

  2. #2
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 814
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 814
    Billets dans le blog
    14
    Par défaut
    Bonne habitude à prendre : mettre la requête SQL dans une variable et passer cette variable à mysql_query, au lieu de directement lancer la requête en paramètre de l'instruction. Ça te permet de pouvoir débugguer en faisant un echo de la requête avant envoi au serveur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    $sql = "
    			LOAD DATA LOCAL INFILE '../CSV/". $type_choisis[$i] .".csv'
    			REPLACE
    			INTO TABLE ". strtolower($type_choisis[$i]) ."
    			FIELDS 
    			TERMINATED BY ';'
    			LINES
    			TERMINATED BY '\\\n'
    			IGNORE 2 LINES
    			";
    echo "<br />Requête :<br />".$sql;
    mysql_query($sql) or die(mysql_error());
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  3. #3
    Membre confirmé
    Inscrit en
    Août 2010
    Messages
    168
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 168
    Par défaut
    Oui c'est ce que je fait de temps en temps mais je me contente de faire un copier coller de la requête

    Bref, le écho me renvoie ceci

    LOAD DATA LOCAL INFILE '../CSV/Simon.csv' REPLACE INTO TABLE simon FIELDS TERMINATED BY ';' LINES TERMINATED BY ' ' IGNORE 2 LINES

    la table 'simon' existe bien! JE suis assez perdu je dois avouer! Existe-t-il une autre req me permettant de faire la même chose? :/

    Edit: A bah si le TERMINATED BY '' ne va clairement pas! Hmm j'ai deja une piste c'est bien. Merci

    Hmm en faite si l'on regarde ceci : http://dev.mysql.com/doc/refman/5.0/fr/load-data.html, cela semble normal

Discussions similaires

  1. importer.csv dans mysql
    Par artichaudd dans le forum Débuter
    Réponses: 1
    Dernier message: 07/12/2011, 23h00
  2. [MySQL] Import CSV dans MySQL
    Par ekzouille dans le forum PHP & Base de données
    Réponses: 16
    Dernier message: 28/09/2010, 17h49
  3. [MySQL] import csv dans mysql
    Par caro_tpl dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 27/10/2007, 14h37
  4. Import CSV dans Mysql
    Par wylls dans le forum Langage SQL
    Réponses: 5
    Dernier message: 17/01/2007, 13h47
  5. Importer CSV dans MySQL
    Par The_freeman dans le forum Administration
    Réponses: 6
    Dernier message: 14/02/2006, 22h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo