|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité régulier
![]() Inscription : mars 2009 Messages : 17 ![]() |
Bonjour,
Je fais actuellement des tests avec ma bdd (via PhpMyAdmin) et je dois régulièrement vider ma bdd pour ensuite la re-remplir via un script. J'aimerais néanmoins pouvoir mettre de coté certaines données pour pouvoir les réinsérer après coup. En gros je souhaiterais obtenir un dump (liste d'INSERTs à effectuer) pour remettre certains de mes résultats. Par exemple: Avoir le dump de la requête Code :
SELECT * FROM T1, T2 WHERE T1.a = T2.b AND id = 22 Ça dit quelque chose à quelqu'un ? Merci beaucoup, PS: En fait, dans PhpMyAdmin, une fois une requête effectuée, on peut "Exporter" les résultats (ce qui fait ce que je veut) mais j'aimerais le faire via une requête SQL, genre Code :
dump("SELECT * FROM T1, T2 WHERE T1.a = T2.b AND id = 22") |
|
|
00
|
|
|
#2 |
|
Membre Expert
![]() Eric DureuilDéveloppeur informatique Inscription : avril 2011 Messages : 843 ![]() |
Salut,
fais une procédure stockée avec un curseur qui concatène les valeurs de chaque ligne dans une chaine avec l'insert qui va au début. si tu connais à l'avance le schéma tu initialises ta chaine de commandes comme ça au début de la procédure: Dans la boucle de lecture du curseur, tu auras un truc du genre: Code sql :
SET ordres=concat_ws(",",ordres,"(", ... ,")"); tu remplaces les "..." par la liste des variables (déclarées au début de ta procédure bien sur) qui ont reçu le fetch de la ligne courante de ton curseur Et, une fois fini la lecture des résultats, tu fais: Code sql :
SET ordres=concat("insert into ",table_dest,"( ... ) values",ordres,";") Tu remplaces les "..." par la liste de tes champs. Le résultat, un insert compact si tu as des résultats retournés ou null donc vide si il n'y en a pas. |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com