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 :

Requêtes sur plusieurs bases de données


Sujet :

PHP & Base de données

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    211
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 211
    Points : 196
    Points
    196
    Par défaut Requêtes sur plusieurs bases de données
    Bonjour,

    Je cherche a obtenir le meme resultat qu'une requete de type:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    INSERT INTO mabase1.matable1
    SELECT * FROM mabase2.matable2
    mais le probleme est que le meme user ne peut pas se connecter aux 2 bases. Il faut donc 2 connections differentes.

    Je me dis que - au pire - je peux faire un tableau avec les resultats de la premiere requete que j'insere dans la seconde base. Mais sachant que c'est pour faire des copies completes de base, est-ce que je risque pas de me retrouver avec des requetes tres chargees, alors que les requetes du type de celle enoncee precedemment sont quasi instantanees?
    Pour info, les tables source et destination ont toujours la meme structure.

    Accessoirement, c'est avec PDO que je cherche a effectuer cette requete, mais je ne suis pas sur que ca change grand chose au probleme...

    Merci d'avance!

  2. #2
    Membre actif Avatar de bigltnt
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    227
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 227
    Points : 205
    Points
    205
    Par défaut
    Salut !

    Si tes 2 bases sont sur le même serveur, une fois que tu as fais ton
    mysql_connect("server", "user", "mdp")

    Tu dois jongler avec le mysql_select_db() , si c'est mysql que tu utilises. Je sais pas ce que veux dire PDO, mais si c'est similaire au SGBD, tu ne pourras a mon avis pas eviter le clic pour changer de localisation, et donc de base de donnée.

    Si c'est au sein d'un script, et bien tu fais un mysql_select_db() avant la requete, et selon si la base est différente:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    mysql_select_db("mabase1");
    mysql_query("INSERT INTO mabase1.matable1");
    mysql_select_db("mabase2");
    mysql_query("SELECT * FROM mabase2.matable2");

  3. #3
    Membre actif Avatar de Cpas2latarte
    Inscrit en
    Janvier 2006
    Messages
    237
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 237
    Points : 255
    Points
    255
    Par défaut
    Si tu veux copier les données d'une base vers une autre, il te faut de retourner vers le dba pour qu'ildonne au compte (utilisé pour la connection) les droits suffisant.
    Si tu n'a pas les droits suffisant, et qu'il te faut passer obligatoirement par 2 compte, tu peux utiliser des fichier temporaires.
    La plupart des SGBD on des outils interne pour importer ou exporter des données à partir de fichier texte. Ces outils sont bine plus performant que des insert unitaires.
    Exportes les données dans un fichier avec le 1er compte à partir de la base source.
    Importes les avec le second dans la base cible.

    Regarde la doc de ton SGBD.
    Done toujours qu'elle SGBD tu utilises, je pourrais peut être t'aider

  4. #4
    Futur Membre du Club
    Inscrit en
    Janvier 2007
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 7
    Points : 6
    Points
    6
    Par défaut
    Je dis peut être une bêtise mais une solution du type

    $con1 = new PDO('mysql:host=host1;dbname=dbname1', username,password);
    $con2 = new PDO('mysql:host=host1;dbname=dbname2', username,password);

    je me suis abstenu de la gestion d'exception ...

    $source= $con1 ->query('SELECT ............');
    $destination = $con2 ->exec('INSERT ............');

    bien sur il faut que tu puisse ouvrir deux connexion simultanées sur le serveur avec un même username.

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. [phpMyAdmin] Requêtes sur plusieurs bases de données
    Par Fala fala dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 6
    Dernier message: 27/09/2010, 15h53
  3. Réponses: 5
    Dernier message: 16/11/2007, 17h54
  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