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

Langage SQL Discussion :

Mise en page résultats de requêtes dans un fichier


Sujet :

Langage SQL

  1. #1
    Membre habitué Avatar de Mygush
    Inscrit en
    Juin 2007
    Messages
    226
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 226
    Points : 175
    Points
    175
    Par défaut Mise en page résultats de requêtes dans un fichier
    Bonjour,
    Je bloque actuellement sur un problème dont je n'ai toujours pas trouvé de solution même sur ce forum.
    En fait j'exécute une requête qui renvoie le résultat dans un fichier texte. Jusque là tout va bien. Le problème est que je souhaite afficher ce résultat sur plusieurs lignes :
    Ce que j'ai actuellement avec ,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Requete
    Select mesColonnes from maTable
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Resultat dans mon fichier 
    B;valeur1;valeur2;valeur3;D;valeur4;valeur5;valeur6;
    B;valeur1;valeur2;valeur3;D;valeur4;valeur5;valeur6;
    B;valeur1;valeur2;valeur3;D;valeur4;valeur5;valeur6;
    Ce que je souhaite avoir,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    B;valeur1;valeur2;valeur3;
    D;valeur4;valeur5;valeur6;
    B;valeur1;valeur2;valeur3;
    D;valeur4;valeur5;valeur6;
    B;valeur1;valeur2;valeur3;
    D;valeur4;valeur5;valeur6;
    Est-ce que quelqu'un peut m'aider à ce sujet ?
    Merci d'avance pour vos réponses !

  2. #2
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SELECT colonne1, Colonne2, Colonne3, Colonne4
    FROM    LaTable
    UNION ALL
    SELECT Colonne5, Colonne6, colonne7, colonne8
    FROM LaTable
    Mais il faut que la colonne 2 ait le même type que le colonne 6, la colonne3 même type que la colonne 7, ... sinon, transtyper.
    Suivant votre besoin, il faudra peut être aussi gérer l'ordre de lignes...

    Autre solution, vous concaténez vos colonnes (et des point-virgules) dans une seule colonne (de type varchar) en mettant un saut de ligne là ou il faut.

    Il y à surement d'autres solutions plus élégantes, mais il faudrait connaitre votre SGBDR, et la méthode que vous utilisez pour exporter dans votre fichier texte...

  3. #3
    Membre habitué Avatar de Mygush
    Inscrit en
    Juin 2007
    Messages
    226
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 226
    Points : 175
    Points
    175
    Par défaut
    Tout d'abord, merci pour cette réponse aieeeuuuuu.
    Effectivement j'ai oublié de préciser que je travaille sous SQL Server 2008 R2 et j'utilise la fonction xp_cmdshell qui exécute une requête suivi d'un queryout vers mon fichier.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    exec xp_cmdshell "maRequête" queryout monFichier.dat -c -t; -T

  4. #4
    Membre habitué Avatar de Mygush
    Inscrit en
    Juin 2007
    Messages
    226
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 226
    Points : 175
    Points
    175
    Par défaut
    Bon j'ai résolu mon problème de la manière suivante en utilisant un UNION ALL avec l'aide d'un ROW_NUMBER pour gérer l'ordre d'affichage.
    Voici le principe de ma requête, on ne sait jamais, ça pourra peut-être aider quelqu'un d'autre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT colonne1, Colonne2, Colonne3, Colonne4, ROW_NUMBER() OVER (ORDER BY Colonne4) AS COL_ORDER
    FROM    LaTable
    UNION ALL
    SELECT Colonne5, Colonne6, colonne7, colonne8, ROW_NUMBER() OVER (ORDER BY Colonne8) AS COL_ORDER
    FROM LaTable
    ORDER BY COL_ORDER, Colonne3 DESC
    Ce qui me donne bien à l'affichage :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    B;Colonne1;Colonne2;Colonne3;Colonne4
    D;Colonne5;Colonne6;Colonne7;Colonne8
    B;Colonne1;Colonne2;Colonne3;Colonne4
    D;Colonne5;Colonne6;Colonne7;Colonne8
    B;Colonne1;Colonne2;Colonne3;Colonne4
    D;Colonne5;Colonne6;Colonne7;Colonne8
    C'est peut-être pas le plus propre mais je n'ai pas trouvé d'autre solution et puis ça fonctionne donc...
    Encore merci aieeeuuuuu pour cette réponse!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Besoin d'aide pour mise en page avec 2 images, dans un fichier xml
    Par guillaume7684 dans le forum XML/XSL et SOAP
    Réponses: 0
    Dernier message: 30/03/2011, 18h25
  2. Export de résultat de requète dans un fichier excel
    Par Mikke dans le forum VBA Access
    Réponses: 28
    Dernier message: 29/05/2008, 20h07
  3. Réponses: 2
    Dernier message: 19/05/2008, 10h31
  4. Réponses: 7
    Dernier message: 26/09/2005, 17h50
  5. Enregistrer le résultat d'une requête dans un fichier Excel
    Par Isa31 dans le forum Bases de données
    Réponses: 4
    Dernier message: 24/05/2005, 14h31

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