Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PDO
PDO Forum d'entraide sur PDO (PHP Data Objects) : pilote générique de bases de données avec PHP. Avant de poster -> FAQ PDO et Cours PDO
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 12/08/2007, 21h30   #1
Membre actif
 
Inscription : octobre 2003
Messages : 211
Détails du profil
Informations forums :
Inscription : octobre 2003
Messages : 211
Points : 153
Points : 153
Envoyer un message via MSN à nabab
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 :
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!
nabab est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/08/2007, 13h31   #2
Membre actif
 
Avatar de bigltnt
 
Inscription : mars 2007
Messages : 221
Détails du profil
Informations personnelles :
Âge : 27

Informations forums :
Inscription : mars 2007
Messages : 221
Points : 155
Points : 155
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 :
1
2
3
4
mysql_select_db("mabase1");
mysql_query("INSERT INTO mabase1.matable1");
mysql_select_db("mabase2");
mysql_query("SELECT * FROM mabase2.matable2");
bigltnt est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/08/2007, 10h04   #3
Membre confirmé
 
Avatar de Cpas2latarte
 
Inscription : janvier 2006
Messages : 238
Détails du profil
Informations forums :
Inscription : janvier 2006
Messages : 238
Points : 217
Points : 217
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
__________________
Il n'y a que 2 choses infinies dans le monde :
L'univers et la bétise humaine...
Mais pour l'univers, je n'ai pas de certitude (A.E.)
Cpas2latarte est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/08/2007, 08h11   #4
Invité de passage
 
Inscription : janvier 2007
Messages : 7
Détails du profil
Informations forums :
Inscription : janvier 2007
Messages : 7
Points : 2
Points : 2
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.
anjin est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 23h33.


 
 
 
 
Partenaires

Hébergement Web