Précédent   Forum des professionnels en informatique > Bases de données > MySQL > Requêtes
Requêtes Forum d'entraide sur les requêtes MySQL
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 07/04/2011, 22h16   #1
Invité régulier
 
Inscription : mars 2009
Messages : 17
Détails du profil
Informations forums :
Inscription : mars 2009
Messages : 17
Points : 9
Points : 9
Par défaut Obtenir un dump sql à partir d'une requête

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
C'est à dire tout les INSERT pour remettre les données retournées par ma requête.

Ç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")
F2000 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/04/2011, 05h11   #2
Membre Expert
 
Homme Eric Dureuil
Développeur informatique
Inscription : avril 2011
Messages : 843
Détails du profil
Informations personnelles :
Nom : Homme Eric Dureuil
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : avril 2011
Messages : 843
Points : 1 318
Points : 1 318
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:

Code sql :
declare ordres text DEFAULT NULL;

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.
ericd69 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 04h22.


 
 
 
 
Partenaires

Hébergement Web