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

Requêtes MySQL Discussion :

Obtenir un dump sql à partir d'une requête


Sujet :

Requêtes MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 19
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    dump("SELECT * FROM T1, T2 WHERE T1.a = T2.b AND id = 22")

  2. #2
    Membre Expert
    Avatar de ericd69
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    1 919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    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 : 1 919
    Billets dans le blog
    1
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    declare ordres text default null;

    Dans la boucle de lecture du curseur, tu auras un truc du genre:

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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.

Discussions similaires

  1. [SQL] Tableau associatif à partir d'une requête
    Par hugo69 dans le forum WinDev
    Réponses: 1
    Dernier message: 24/03/2007, 19h22
  2. Réponses: 2
    Dernier message: 28/08/2006, 08h09
  3. Réponses: 2
    Dernier message: 24/08/2006, 11h02
  4. [MySQL] Remplissage d'une liste déroulante à partir d'une requête SQL
    Par gaucher dans le forum PHP & Base de données
    Réponses: 9
    Dernier message: 11/05/2006, 15h46
  5. Récupérer le code SQL à partir d'une requête
    Par Edith_T dans le forum Requêtes et SQL.
    Réponses: 9
    Dernier message: 23/11/2004, 14h10

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