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 :

[SQL] Importer un fichier sql depuis PHP


Sujet :

PHP & Base de données

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2003
    Messages : 44
    Points : 43
    Points
    43
    Par défaut [SQL] Importer un fichier sql depuis PHP
    Bonjour,
    J'aimerai pouvoir exécuter une suite de requêtes pour créer des tables SQL depuis un script php.
    J'ai mes tables au format SQL exportées depuis phpmyadmin, du type:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    -- --------------------------------------------------------
     
    --
    -- Table structure for table `flbx_taches`
    --
     
    CREATE TABLE `flbx_taches` (
      `id` int(10) unsigned NOT NULL auto_increment,
      `name` varchar(100) NOT NULL default '',
      KEY `id` (`id`,`name`)
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1;
    J'ai essayé un simple mysql_query() sur une chaine de caractère contenant le tout, mais ça ne passe pas, il faut qu'une requête à la fois apparement.

    J'ai aussi regardé du côté de LOAD DATA INFILE, mais il faut spécifier un nom de table pour y ajouter du contenu: ce n'est pas ce que je dois faire !

    Y a-t-il une bonne façon de faire cela ?
    Merci !

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    1 349
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 349
    Points : 1 460
    Points
    1 460
    Par défaut
    c'est toujour le meme fichier ou ca change sinon tu peut faire directement

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $req="CREATE TABLE....."
    mysql_query ($req)..
    mais bon c 'est peut etre pas ca que tu cherche a faire...


    et pour ta chaine de caractere contenant le tou normal que ca apsse pas mysql_query permet denvoyer qu'une rquete a la foi
    Stay in Bed .. Save Energy

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2003
    Messages : 44
    Points : 43
    Points
    43
    Par défaut
    C'est un fichier contenant plusieurs CREATE TABLE.

    Il n'y a pas un moyen de le réimporter d'un coup, puisqu'on peut l'exporter à l'aide de mysqldump ? (mais pas depuis le shell, depuis php !)

    Sinon il faut que je me tape le parsing et que je fasse une requête par truc....

  4. #4
    Membre expérimenté
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    1 349
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 349
    Points : 1 460
    Points
    1 460
    Par défaut
    Citation Envoyé par TNorth
    C'est un fichier contenant plusieurs CREATE TABLE.

    Il n'y a pas un moyen de le réimporter d'un coup, puisqu'on peut l'exporter à l'aide de mysqldump ? (mais pas depuis le shell, depuis php !)

    Sinon il faut que je me tape le parsing et que je fasse une requête par truc....
    moi j'ai fais ca hier....mais bon que 8 tables....donc me sui fais un script avec une requete par table....j'ai pas cherché plus loin
    Stay in Bed .. Save Energy

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2003
    Messages : 44
    Points : 43
    Points
    43
    Par défaut
    Ok, voici comment j'ai résolu le prob (quick & dirty je l'admet)

    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
    $sql_file=file("tables.sql");
    $i=0;
    foreach($sql_file as $s) {
            $req[$i]=preg_replace("/^--.+$/", "", $s);
            $i++;
    }
    $num=count($req);
    $data=array();
    $j=0;
    for ($i=0; $i<$num; $i++){
            if(preg_match("/^[^--].+[a-zA-Z].+$/", $req[$i])) { //ici ptet qu'un str_qqch serait plus rapide !
                    $data[$j].=$req[$i];
            } else {
                    $j++;
            }
    }
    foreach ($data as $d) {
            mysql_query($d) or die ("Impossible d'effectuer la requête: ".mysql_error());
    }

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

Discussions similaires

  1. Appel fichier SQL via un fichiers SQL
    Par tibjedi dans le forum Administration
    Réponses: 2
    Dernier message: 03/03/2011, 11h17
  2. [MySQL] Importer un fichier SQL en PHP
    Par WebManiaK dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 07/07/2009, 13h20
  3. [SQL] Importer un fichier sql
    Par max-mag dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 29/02/2008, 13h30
  4. [SQL] importer un fichier .sql par php
    Par adr22 dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 05/09/2007, 13h34
  5. [SQL] Importer un fichier .sql dans une base de données avec PHP
    Par budiste dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 23/06/2006, 14h15

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