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 :

Fichier texte vers table MySQL [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 39
    Points : 35
    Points
    35
    Par défaut Fichier texte vers table MySQL
    Bonjour,

    est-ce que c'est possible d'alimenter une table MySQL a partir d'un fichier txt contenant des enregistrement séparés par des tabulations avec un script PHP?

  2. #2
    Membre actif Avatar de Momodedf
    Inscrit en
    Juillet 2007
    Messages
    246
    Détails du profil
    Informations personnelles :
    Âge : 35

    Informations forums :
    Inscription : Juillet 2007
    Messages : 246
    Points : 221
    Points
    221
    Par défaut
    Par des tabulations je ne crois pas, il faut un caractere pour faire la séparation.

  3. #3
    Membre expérimenté

    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    1 138
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 138
    Points : 1 504
    Points
    1 504
    Par défaut
    Si je pense que tu peux très bien récupérer ces données via une "moulinette" en php.

    Tu fais un script php qui ouvre et parcourt le fichier texte.
    Pour chaque ligne de ton fichier, tu fais un explode() de la ligne avec le caractère \t (tabulation) comme séparateur.
    Puis tu génère la requête SQL ensuite.

  4. #4
    Membre actif Avatar de JmL40
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    348
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 348
    Points : 246
    Points
    246
    Par défaut
    Bonjour,

    Je te donne des idée puisque je travail actuellement sur l'import de données dans une BD Mysql par des fichiers texte.

    Exemple :

    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
     
     
    while (!feof($myfile))
    { 	
          //PARCOURS DES LIGNES
         $ligne = fgets($myfile,4096);
         $liste = explode(";",$ligne);
     
         //TAILLE DE LISTE
         taillel = sizeof($liste);
     
         //REQUETE
         $requete = 'INSERT INTO TABLE (champs1, champs2) VALUES (';
     
             for($i=0;$i<=$taillel;$i++)
             {
                   if($i != $taillel)
                   {
                       $requete.= '"'.$liste[$i]'",';
                   }
                   else if($i = $taillel)
                   {
                       $requete.= '"'.$liste[$i]'")';
                   }
             }
     
    		 $resultat = mysql_query($requete);
     
    		 ....
    }
    A peu près ca !

    Cordialement

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 39
    Points : 35
    Points
    35
    Par défaut indication
    merci pour vos réponses,
    j'ai oublié de d'indiquer que la taille du fichier est trés grande, y a t'il un riske que que le serveur php s'arrète de répondre avant la fin d'lexportation de l'intégralité du fichier txt? si oui est-ce qu'il y a un routine pour redémarer le script périodiquement.?
    Cordialement

  6. #6
    Membre du Club
    Inscrit en
    Mars 2004
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 62
    Points : 56
    Points
    56
    Par défaut
    Les réponses formulées sont tout à fait exacte. Il faut savoir que chaque serveur web possede un timeout à partir duquel il arrete le script en cours. Tout depend de ton hebergeur et de la configuration apache qu'il impose. Je crois que la fonction phpinfo() t'affiche entre autre le timeout du serveur apache.

    Après la lecture de fichier texte est très rapide en php (également en perl, voir si c'est supporté par ton hebergeur). Si ton fichier est vraiment gros tu peux le décomposer en plusieurs morceaux et après faire tes insertions par lecture successive de tes fichiers.

    Je te conseil également de verifier que l'insertion que tu desire faire n'est pas déjà présent dans ta base si tu veux eviter les doublons.

    Bon courage

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 39
    Points : 35
    Points
    35
    Par défaut serveur php
    merci pour vos participations, c vraiment gentil, conernant le serveur il s'arrete chaque 90 secondes et bien sur que le script termine l'alimentation de la table.
    est-ce que c'est possible avec php de faire redémarre le script avant que le serveur l'arrete?

    Cordialement

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 39
    Points : 35
    Points
    35
    Par défaut le code qui ne marche pas toujours
    bonjour,

    j'ai fait un code pour lire un fichier txt, éliminer les tabulations ensuite insérer les données dans une table, je pense qu'il y a un problème que je n'arrive pas à détecter au niveau de la requête insert, donc si quelqu'un peut m'aider à debogué ce code je serai reconnaissant.

    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <title>Document sans titre</title>
    <meta http-equiv="refresh" content="90">
    </head>
     
    <body>
     
     
    <?php
     
    define('DB_SERVER', 'localhost'); // serveur mysql
    define('DB_SERVER_USERNAME', 'root'); // nom d'utilisateur
    define('DB_SERVER_PASSWORD', ''); // mot de passe
    define('DB_DATABASE', 'DB'); // nom de la base
    function connexion() {
    	// Connexion au serveur mysql
    	$connect = mysql_connect(DB_SERVER, DB_SERVER_USERNAME, DB_SERVER_PASSWORD) 
    	or die('Impossible de se connecter : ' . mysql_error());
     
    	// sélection de la base de données
    	mysql_select_db(DB_DATABASE, $connect);
    }
     
     
    //ouvreture en lecture du fichier txt//
    $handle=fopen("....txt","r");
     
    //varibale de la position de la lecture//
    $position=0;
     
    if ($handle) {
        fseek($handle, $position);// commencer à partir de la dernière position//
     
        while (!feof($handle)){
     
            $liste = fgets($handle, 4096);//parcours des lignes//
            $liste = explode("\t",$liste);//éliminer les tabulations//
            $a=$liste[0];
            $b=$liste[1];
            $c=$liste[2];
     
            //REQUETE
            $requete = "INSERT INTO Lex (a, b, c) VALUES ('".$a."','".$b."','".$c."')";
            $resultat = mysql_query($requete);
     
        }
     
        $position=ftell($handle);//récupérer la dernière position de l'éxecution//
        fclose($handle);
    }
     
     
    ?> 
    </body>
    </html>

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AC-2000] Traiter un fichier texte vers une table
    Par rolandbreche dans le forum Access
    Réponses: 10
    Dernier message: 09/08/2010, 23h30
  2. extraire les données d'un fichier text vers une table access
    Par djatto dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 17/09/2008, 18h51
  3. [MySQL] fichier Excel vers Table BD MySQL
    Par sidimatique dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 12/08/2008, 13h19
  4. [MySQL] Problème pour insérer les données d'un fichier texte vers une table Mysql !
    Par BARRIAU76 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 01/02/2008, 00h24
  5. [sql2k][dts] : copie fichier texte vers table
    Par gatsu07 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 27/06/2006, 11h53

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