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

EDI, CMS, Outils, Scripts et API PHP Discussion :

Requêtes sur plusieurs bases de données


Sujet :

EDI, CMS, Outils, Scripts et API PHP

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2003
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 19
    Points : 12
    Points
    12
    Par défaut Requêtes sur plusieurs bases de données
    Bonjour,

    J'utilise phpmyadmin.

    Je dispose de 150 bases, chacune pour un client différent.
    Dans chaque base, il y a plusieurs tables dont une qui s'appelle interv (qui à la même forme dans chaque base)

    Je voudrais réaliser une requête SQL sur phpmyadmin pour regrouper dans une seule base (ou un fichier excel) l'ensemble des données de ces tables, les unes a la suite des autres, avec la possibilité de rajouter une colonne pour insérer le nom de la base de données pour chaque élément.

    J’avoue que je galère un peu.

    Je vous remercie par avance pour votre aide!

  2. #2
    Membre émérite Avatar de Madfrix
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 326
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 326
    Points : 2 566
    Points
    2 566
    Par défaut
    Citation Envoyé par Fala fala Voir le message
    Je dispose de 150 bases, chacune pour un client different.


    Logiquement une base comprend plusieurs clients; non ? Enfin il me semble que c'est ce que tu souhaites faire maintenant.

    Cette question concerne du code php ou l'utilitaire phpMyAdmin ?

    Si c'est php, tu peux lister les noms de tes bases dans un tableau puis par une boucle, te connecter à chaque base et exporter ces données dans une nouvelle base

    Ou sinon via cette fonction :

    Code php : 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
    58
    59
    60
    61
    62
     
    function dumpMySQL($serveur, $login, $password, $base, $mode)
    {
        $connexion = mysql_connect($serveur, $login, $password);
        mysql_select_db($base, $connexion);
     
        $entete = "";
        $entete .= "-- dump de la base ".$base." au ".date("d-M-Y")."\n";
        $entete .= "-- ----------------------\n\n\n";
        $creations = "";
        $insertions = "\n\n";
     
        $listeTables = mysql_query("show tables", $connexion);
        while($table = mysql_fetch_array($listeTables))
        {
            // si l'utilisateur a demandé la structure ou la totale
            if($mode == 1 || $mode == 3)
            {
                $creations .= "-- -----------------------------\n";
                $creations .= "-- creation de la table ".$table[0]."\n";
                $creations .= "-- -----------------------------\n";
                $listeCreationsTables = mysql_query("show create table ".$table[0], $connexion);
                while($creationTable = mysql_fetch_array($listeCreationsTables))
                {
                  $creations .= $creationTable[1].";\n\n";
                }
            }
            // si l'utilisateur a demandé les données ou la totale
            if($mode > 1)
            {
                $donnees = mysql_query("SELECT * FROM ".$table[0]);
                $insertions .= "-- -----------------------------\n";
                $insertions .= "-- insertions dans la table ".$table[0]."\n";
                $insertions .= "-- -----------------------------\n";
                while($nuplet = mysql_fetch_array($donnees))
                {
                    $insertions .= "INSERT INTO ".$table[0]." VALUES(";
                    for($i=0; $i < mysql_num_fields($donnees); $i++)
                    {
                      if($i != 0)
                         $insertions .=  ", ";
                      if(mysql_field_type($donnees, $i) == "string" || mysql_field_type($donnees, $i) == "blob")
                         $insertions .=  "'";
                      $insertions .= addslashes($nuplet[$i]);
                      if(mysql_field_type($donnees, $i) == "string" || mysql_field_type($donnees, $i) == "blob")
                        $insertions .=  "'";
                    }
                    $insertions .=  ");\n";
                }
                $insertions .= "\n";
            }
        }
     
        mysql_close($connexion);
     
        $fichierDump = fopen('F:\backup-'.date('d-m-Y_Hi').'.sql', "wb");
        fwrite($fichierDump, $entete);
        fwrite($fichierDump, $creations);
        fwrite($fichierDump, $insertions);
        fclose($fichierDump);
        echo "Sauvegarde réalisée avec succès !!";
    }

    Tu peux créer 150 fichiers SQL puis les concaténer (les INSERT) pour ensuite les mettre dans ta nouvelle base. Même principe, fonction à utiliser comme ca :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $mes_bases = array('base1', 'base2');
     
    foreach($mes_bases as $ma_base)
         dumpMySQL($serveur, $login, $password, $base, $mode)

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2003
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 19
    Points : 12
    Points
    12
    Par défaut
    Merci beaucoup.

    Je voulais faire les manips si c'est possible. Est ce que je peux lancer les fonctions que tu m'as proposées via phpmyadmin?

    Merci d'avance!

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    127
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 127
    Points : 111
    Points
    111
    Par défaut
    sur le site officiel de mysql, tu peux trouver des exemples pour écrire tes requetes.

    Pour en faire sur plusieurs bases de données, c'est le même principe que sur plusieurs tables :

    par exemple :
    select t1.f1, t2.f2 from db1.table1 t1 join db2.table1 t2 on t1.id=t2.id
    Michaël, développeur 2.0 et demi,
    http://www.bacchanales-prod.fr

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2003
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 19
    Points : 12
    Points
    12
    Par défaut
    Bonjour à tous,

    J'ai essayé de faire ce que propose Madfrix, mais j'avoue qu'après de multiples tentatives, je n'y arrive pas.

    Est ce qu'il serait possible de faire ça sous phpmyadmin ou pas du tout?

    Je vous remercie à tous par avance!

  6. #6
    Membre émérite Avatar de Madfrix
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 326
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 326
    Points : 2 566
    Points
    2 566
    Par défaut
    Bonjour,

    je ne pense pas qu'il soit possible de "boucler" sur toutes les bases sous phpMyAdmin ou alors je connais pas la manip.

    Pourquoi souhaites tu effectuer les opérations sous phpMyAdmin et pas via php ?

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    127
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 127
    Points : 111
    Points
    111
    Par défaut
    Fala fala, as-tu essayé ce que je t'ai proposé ?
    Michaël, développeur 2.0 et demi,
    http://www.bacchanales-prod.fr

Discussions similaires

  1. [MySQL] répercuter requête sur plusieurs base de donnés
    Par castader dans le forum PHP & Base de données
    Réponses: 0
    Dernier message: 03/10/2011, 17h46
  2. Réponses: 5
    Dernier message: 16/11/2007, 17h54
  3. [PDO] Requêtes sur plusieurs bases de données
    Par nabab dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 23/08/2007, 08h11
  4. Requête sur plusieurs bases de données
    Par Oluha dans le forum ASP
    Réponses: 8
    Dernier message: 14/10/2005, 14h57

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