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

SQL Oracle Discussion :

Formater sql en csv


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Décembre 2008
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 35
    Par défaut Formater sql en csv
    Bonjour à tous

    Voila j'ai finalisé plusieurs requete afin d'automatiser cette extraction or on me demande préformater les donnes pour pouvoir en extraire un csv.

    Voici la requete :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    SELECT TRUNC (amv_date_mvt, 'dd') "Date du mouvement",amv_societe "Societe", amv_article "Article", art.ART_DESIGNATION "Désignation", amv_magasin "Magasin", 
    amv_analytique "Centre analytique", a.can_designation "Désignation analytique", amv_cf "Atelier", inter.INT_NOM "Intervenant",
    TRUNC (amv_prix,2) "Prix unitaire", amv_quantite "Quantité",TRUNC (amv_prix * amv_quantite,2) "Montant", amv_cpte_cg "Compte",
    rub. RUB_DESIGNATION "Nature" 
    	   FROM ARTICLES_MVTS,
    	   C_ANALYTIQUES a,
    	   ARTICLES art,
    	   INTERVENANTS inter,
    	   RUBRIQUES rub
    	   		WHERE (amv_societe = 'LY'
    				  AND art_societe = 'LY' AND can_societe = 'LY')
    				  AND amv_date_mvt >= LAST_DAY(TRUNC(ADD_MONTHS(SYSDATE, -2))) + 1
    				  AND amv_date_mvt < LAST_DAY(TRUNC(ADD_MONTHS(SYSDATE, -1))) + 1
    				  AND amv_transac IN (5)
    				  AND a.can_centre=amv_analytique
    				  AND art.ART_ARTICLE = amv_article
    				  AND inter.INT_INTERVENANT = amv_intervenant
    				  AND inter.INT_SOCIETE='LY'
    				  AND rub.RUB_RUBRIQUE = amv_rubrique
    				  AND rub.RUB_SOCIETE ='LY'		  
    ORDER BY amv_date_mvt

  2. #2
    Membre chevronné Avatar de xdescamp
    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 300
    Par défaut
    Bonjour,

    Si c'est pour exécuter sous SQL*Plus, tu peux tout simplement utiliser les instructions suivantes et faire un SPOOL du résultat:
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SET COLSEP ';'
    SET TRIMSPOOL ON
    SET PAGESIZE 50000
    Par contre, cela génère des espaces superflus à la fin de chaque colonne.
    Si tu ne veux pas de ces espaces, il faut que tu concatènes tous tes champs en ajoutant le ';' entre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    col1||';'||col2||';'||col3...

  3. #3
    Membre averti
    Inscrit en
    Décembre 2008
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 35
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    SELECT 'Date du Mouvement'||';'||'Societe'||';'||'Article'||';'||'Désignation'||';'||'Magasin'||';'||'Centre analytique'||';'||'Désignation analytique'||';'||'Atelier'||';'||'Intervenant'
    ||';'||'Prix unitaire'||';'||'Quantité'||';'||'Montant'||';'||'Compte'||';'||'Nature' colonnes
    FROM dual
    UNION ALL
    SELECT TRUNC(amv_date_mvt, 'dd')||';'||amv_societe||';'||amv_article||';'||art.ART_DESIGNATION||';'||amv_magasin||';'||amv_analytique||';'||a.can_designation||';'||amv_cf||';'||inter.INT_NOM||';'||TRUNC(amv_prix,2)||';'||amv_quantite||';'||TRUNC (amv_prix * amv_quantite,2)||';'||amv_cpte_cg||';'||rub.RUB_DESIGNATION
             FROM ARTICLES_MVTS,
             C_ANALYTIQUES a,
             ARTICLES art,
             INTERVENANTS inter,
             RUBRIQUES rub
                      WHERE (amv_societe = 'LY'
                              AND art_societe = 'LY' AND can_societe = 'LY')
                              AND amv_date_mvt >= LAST_DAY(TRUNC(ADD_MONTHS(SYSDATE, -2))) + 1
                              AND amv_date_mvt < LAST_DAY(TRUNC(ADD_MONTHS(SYSDATE, -1))) + 1
                              AND amv_transac IN (5)
                              AND a.can_centre=amv_analytique
                              AND art.ART_ARTICLE = amv_article
                              AND inter.INT_INTERVENANT = amv_intervenant
                              AND inter.INT_SOCIETE='LY'
                              AND rub.RUB_RUBRIQUE = amv_rubrique
                              AND rub.RUB_SOCIETE ='LY'
    voila c'est ok j'ai réussit par contre comment faire un ===> Order By

  4. #4
    Membre chevronné Avatar de xdescamp
    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 300
    Par défaut
    Il faut utiliser une vue implicite :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    SELECT col1||';'||col2...
    FROM (SELECT champ1 AS col1, champ2 AS col2...
          FROM table1
          WHERE ...
          UNION ALL
          SELECT champ21 AS col1, champ22 AS col2...
          FROM table2
          WHERE ...)
    OREDER BY col2, col1...

  5. #5
    Membre averti
    Inscrit en
    Décembre 2008
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 35
    Par défaut
    je n'arrive pas à trier par date

  6. #6
    Membre chevronné Avatar de xdescamp
    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 300
    Par défaut
    Il faut que tu sélectionnes le champ contenant la date tel quel dans ta première requête, puis que tu fasse un ORDER BY dessus tout simplement.
    Tu peux poster ta requête si ça ne fonctionne pas.

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

Discussions similaires

  1. [SQL2005]Formations SQL Server 2005
    Par aemag dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 08/02/2007, 17h48
  2. [CSV] formater un fichier csv?
    Par fmh1982 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 03/12/2006, 12h47
  3. Date conversion format sql
    Par nikoo_27 dans le forum Langage
    Réponses: 4
    Dernier message: 07/11/2006, 12h31
  4. [Date] Date courante au format SQL
    Par Mister Nono dans le forum JDBC
    Réponses: 3
    Dernier message: 17/03/2005, 16h57
  5. Récupérer une base postgresql au format .SQL ?
    Par hesky dans le forum PostgreSQL
    Réponses: 5
    Dernier message: 26/08/2004, 10h14

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