Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1017 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Requête d'insertion multi base

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Requête d'insertion multi base

n°2191952
sltpaulo
Posté le 28-05-2013 à 15:06:30  profilanswer
 

Bonjour,
 
J'ai une question (pour m'éviter à faire des while en php et parce que je suis curieux)
 
Je voudrai savoir s'il est possible d'avoir deux liens "identifier" pour une meme requête (donc en passant par php et mysql)
 
Exemple:
 
Insert into `archive`.`test` (`col1`,`col2`) select `col1`,`col2` from `prod`.`test` where `archive`.`test`.`col3`='toto'
 
ça c'est la requête, mais je vois pas comment faire pour la ligne suivante
 
mysql_query("sql",..........) la je vois pas comment mettre mes deux liens (supposant deux bases sur deux serveurs différents)
 
Merci de vos réponse.

mood
Publicité
Posté le 28-05-2013 à 15:06:30  profilanswer
 

n°2191960
rufo
Pas me confondre avec Lycos!
Posté le 28-05-2013 à 15:41:35  profilanswer
 

Ben tu crées une connexion par serveur. Sinon, tu exécutes la requête sur le premier serveur, puis tu clos la connexion et t'en rouvres une autre sur le 2ème serveur. Je vois pas trop le pb :??:


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°2191978
sltpaulo
Posté le 28-05-2013 à 16:31:38  profilanswer
 

ça je peux le faire si je fais un truc du genre
 

Code :
  1. $link1 = connectionDB1();
  2. $link2 = connectionDB2();
  3. $sql = "select id from test";
  4. $result = mysql_query($sql,$link1);
  5. while($row = mysql_fetch_array($result)){
  6.    $sql = "insert into test (col1) values ('".$row['id]."')";
  7.    $bool = mysql_query($sql,$link2);
  8.    if(!$bool)
  9.       exit;
  10. }


 
La je fais une multitude de requête et il suffit d'un problème qqconque en php pour m'arrêter dans ma boucle (ici si id est un string => il t'attends. ba comment j'ai construit ma requête (sans mysql_real_escape_string) ba ça foire, je m'arrête au milieu de ma boucle et c'est la merde)
 
Je voudrai faire une seule requête d'où la demande (soucis de fiabilité du code + performance)


Message édité par sltpaulo le 28-05-2013 à 16:34:27
n°2192003
rufo
Pas me confondre avec Lycos!
Posté le 28-05-2013 à 17:42:49  profilanswer
 

Tu pourras pas, à commencer par le fait que le sgbd va refuser d'exécuter plusieurs requêtes en une fois quand elles sont passées via PHP. En gros, si t'as 2 requêtes SQL séparées par un ; dans une chaîne que tu passes à mysql_query(), ben seule la première sera exécutée (question de sécurité et éviter des SQL injection entre autre, il me semble).
 
Edit : si ta BD est en InnoDB, tu peux utiliser le mode transactionnel pour qu'au moins, en cas d'erreur en cours de script, tu retrouves ta BD dans l'état initial ;)


Message édité par rufo le 28-05-2013 à 17:43:58

---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°2192006
sltpaulo
Posté le 28-05-2013 à 18:31:52  profilanswer
 

Je sais tout ça, hmmm je sais que mysql ne permet pas de faire ça (la base est en myISAM (non négociable)).
 
Pour préciser un peu mon cas =>
 
meme serveur apache, base1, base 2
 
deux utilisateur mysql, user1, user2
tous les privilège base1 => user1, base2 => user2
 
avec un utilisateur, je peux faire
 
select * from 'base1'.test t1 join 'base2'.test t2 on t1.id=t2.id
 
mais je voudrais faire la meme requete alors que je n'ai acces que aux utilisateurs 1 et 2
 
existe-t-il une solution? (sans modifier cette configuration)

n°2192008
rufo
Pas me confondre avec Lycos!
Posté le 28-05-2013 à 19:30:50  profilanswer
 

C'est quoi ton besoin initial (besoin fonctionnel) ? Parce que la solution que t'essayes de mettre en oeuvre n'est peut-être pas la bonne (solution technique à base de php)...


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°2192050
sltpaulo
Posté le 29-05-2013 à 09:45:15  profilanswer
 

Je passe par une interface web pour lancer une requête sql, je voudrais que mon serveur travaille uniquement sur le sql, je ne veux pas d'un traitement en php en parallèle.

n°2192051
rufo
Pas me confondre avec Lycos!
Posté le 29-05-2013 à 09:47:59  profilanswer
 

Là, tu exprimes une nouvelle fois une solution technique. mais quel est le besoin fonctionnel, le but à atteindre ?


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°2192054
flo850
moi je
Posté le 29-05-2013 à 10:11:19  profilanswer
 

c'est possible : http://stackoverflow.com/questions [...] lect-query
 
pas trivial , mais possible  
( le besoin fonctionnel est visiblememnt d'archiver dans uen base sur un autre serveur ce qui se passe ici )


---------------

n°2192072
rufo
Pas me confondre avec Lycos!
Posté le 29-05-2013 à 12:04:12  profilanswer
 

Je pensais aussi qu'il s'agissait d'une opération d'archivage, mais plutôt que des suppositions, je préférais qu'il le confirme lui-même.  
 
En tout cas, j'aurais appris l'utilité du moteur FEDERATED, merci flo850 :jap:
 
Cela dit, j'ai l'impression qu'il n'est pas à l'abri d'une interruption du traitement de ses requêtes avec cette méthode...


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
mood
Publicité
Posté le 29-05-2013 à 12:04:12  profilanswer
 

n°2192202
sltpaulo
Posté le 30-05-2013 à 11:09:26  profilanswer
 

Bonjour, désolé de la réponse tardive, effectivement c'est pour un besoin d'archivage.
 
flo, merci pour ce lien, mais je l'avais déjà visionné :)
 
J'ai adopté une autre solution, j'ouvre plusieurs connexion sql et je fais un traitement en php avant de trouver une meilleur solution (une simple serai de créer un utilisateur avec accès sur les deux bases mais par besoin de sécurité, je ne veux pas).
 
Merci pour votre aide,  
 
Cordialement
 
Paul


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Requête d'insertion multi base

 

Sujets relatifs
base de donneé paradoxRequete croisée entre plusieurs tableaux (comme dans une DB)
Faire la moyenne des données d'une colonne récupérées avec une requeteSortir des infos d'une base MySQL à partir d'un fichier txt ou csv
Insérer une donnée dans une base SQlite via PHP[Oracle 10G] UTL_FILE avec requête conséquente
création d'une base de donnée avec accessRequête Sql - Trouver dates les plus proches
Requête SQL : Même occurence dans une colonne 
Plus de sujets relatifs à : Requête d'insertion multi base


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR