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

Oracle Discussion :

Unix Oracle avec sortie un fichier CSV (Calcul de catégorie)


Sujet :

Oracle

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    106
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2004
    Messages : 106
    Points : 104
    Points
    104
    Par défaut Unix Oracle avec sortie un fichier CSV (Calcul de catégorie)
    Bonjour tout le monde,

    Je suis nouveau ici, et je me permet de poser la question suivante :

    je suis sur un projet actuellement pour ma boite qui tourne sous un environnement UNIX.

    J'ai une base de données sous Oracle 8.1.7.4.0, et je veux effectuer des requetes (souvent des SELECT) qui me generera un fichier CSV en sortie.

    Je voudrais savoir, si c'etait l'un de vous comment aurait il procedé!?

    Merci d'avance.

  2. #2
    Membre expert

    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Janvier 2004
    Messages
    2 862
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 862
    Points : 3 609
    Points
    3 609
    Par défaut
    Bonjour et bienvenu sur le forum

    Je ne vois que 2 solutions :

    Soit faire un spool de ma requête

    Soit utiliser avec utl_file (cf : http://oracle.developpez.com/sources...traction_table)

    Pour choisir entre les deux, cela dépend du contexte, de la volumètrie, si tu as des données calculées, si tu veux que le fichier soit généré ailleurs que sur la base de données, etc...

    De manière générale, ma préférence irait à la première solution (surtout en 8i)

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    106
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2004
    Messages : 106
    Points : 104
    Points
    104
    Par défaut
    Citation Envoyé par plaineR
    Bonjour et bienvenu sur le forum

    Je ne vois que 2 solutions :

    Soit faire un spool de ma requête

    Soit utiliser avec utl_file (cf : http://oracle.developpez.com/sources...traction_table)

    Pour choisir entre les deux, cela dépend du contexte, de la volumètrie, si tu as des données calculées, si tu veux que le fichier soit généré ailleurs que sur la base de données, etc...

    De manière générale, ma préférence irait à la première solution (surtout en 8i)

    Merci mec!

    Je vais piocher la première et je vous tiendrez au courant.

  4. #4
    Expert confirmé
    Avatar de laurentschneider
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2005
    Messages
    2 944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2005
    Messages : 2 944
    Points : 4 926
    Points
    4 926
    Par défaut
    pour donner un exemple tout simple

    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
    SQL> set und off lin 1000 pages 0 emb on newp none feedb off
    SQL> select to_char(empno,'FM999999999')||';'||ename||';'||
    to_char(hiredate,'YYYY-MM-DD') "EMPNO;ENAME;HIREDATE" from emp;
    EMPNO;ENAME;HIREDATE
    7369;SMITH;1980-12-17
    7499;ALLEN;1981-02-20
    7521;WARD;1981-02-22
    7566;JONES;1981-04-02
    7654;MARTIN;1981-09-28
    7698;BLAKE;1981-05-01
    7782;CLARK;1981-06-09
    7788;SCOTT;1987-04-19
    7839;KING;1981-11-17
    7844;TURNER;1981-09-08
    7876;ADAMS;1987-05-23
    7900;JAMES;1981-12-03
    7902;FORD;1981-12-03
    7934;MILLER;1982-01-23

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    106
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2004
    Messages : 106
    Points : 104
    Points
    104
    Par défaut
    Citation Envoyé par laurentschneider
    pour donner un exemple tout simple

    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
    SQL> set und off lin 1000 pages 0 emb on newp none feedb off
    SQL> select to_char(empno,'FM999999999')||';'||ename||';'||
    to_char(hiredate,'YYYY-MM-DD') "EMPNO;ENAME;HIREDATE" from emp;
    EMPNO;ENAME;HIREDATE
    7369;SMITH;1980-12-17
    7499;ALLEN;1981-02-20
    7521;WARD;1981-02-22
    7566;JONES;1981-04-02
    7654;MARTIN;1981-09-28
    7698;BLAKE;1981-05-01
    7782;CLARK;1981-06-09
    7788;SCOTT;1987-04-19
    7839;KING;1981-11-17
    7844;TURNER;1981-09-08
    7876;ADAMS;1987-05-23
    7900;JAMES;1981-12-03
    7902;FORD;1981-12-03
    7934;MILLER;1982-01-23

    Merci pour ta réponse man, mais je n'ai pas bien détaillé le sujet par craint de pas etre compris !

    Voilà j explique en général de quoi il s'agit :

    Je dipose d'une table, qu on appelera TOP10, qui contient les champs suivants :

    --> CODEERR
    --> CHAMP
    --> COMPTEUR
    --> DATE
    ...


    ce que je souhaite faire, c'est de faire mes requetes qui calculent pour une période donnée (souvent un moi) et pour un CODEERR donné la somme de COMPTEUR pour un CHAMP donné :d wow.

    et enfin de compte, que ca genere un etat qui me sortira par CODEERR et par CHAMP la somme de COMPTEUR, ceci etant la DATE ne changera pas donc pas la peine de l'afficher.

  6. #6
    Expert confirmé
    Avatar de laurentschneider
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2005
    Messages
    2 944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2005
    Messages : 2 944
    Points : 4 926
    Points
    4 926
    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
    22
    23
    24
    SQL> select job,deptno,sum(sal) from emp where 
    to_char(hiredate,'YYYY-MM-DD') like '&date.%' group by job,deptno;
    Enter value for date: 1981
    old   1: select job,deptno,sum(sal) from emp where 
    to_char(hiredate,'YYYY-MM-DD') like '&date.%' group by job,deptno
    new   1: select job,deptno,sum(sal) from emp where 
    to_char(hiredate,'YYYY-MM-DD') like '1981%' group by job,deptno
    JOB           DEPTNO   SUM(SAL)
    CLERK             30    1101.32
    ANALYST           20    3477.83
    MANAGER           10    2840.24
    MANAGER           20    3448.85
    MANAGER           30    3303.94
    SALESMAN          30    6491.94
    PRESIDENT         10    5796.38
    SQL> select job,deptno,sum(sal) from emp where 
    to_char(hiredate,'YYYY-MM-DD') like '&date.%' group by job,deptno;
    Enter value for date: 1981-02
    old   1: select job,deptno,sum(sal) from emp where 
    to_char(hiredate,'YYYY-MM-DD') like '&date.%' group by job,deptno
    new   1: select job,deptno,sum(sal) from emp where 
    to_char(hiredate,'YYYY-MM-DD') like '1981-02%' group by job,deptno
    JOB           DEPTNO   SUM(SAL)
    SALESMAN          30    3303.93
    si tu nous donnons des exemples avec les "create table" et les "insert", ainsi que les données que tu désires obtenir, ça aiderait à cerner ton / tes prob

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    106
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2004
    Messages : 106
    Points : 104
    Points
    104
    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
     
    SQL> DESC TOP10_PHOTO
     Name                                      Null?    Type
     ----------------------------------------- -------- 
     CODEERR                                           NUMBER(3)
     CHAMP                                              VARCHAR2(30)
     COMPTEUR                                         NUMBER(38)
     TYPEMU                                            VARCHAR2(8)
     ER                                                   VARCHAR2(8)
     TERL                                                VARCHAR2(8)
     SOURCE                                            VARCHAR2(16)
     SOCIETE                                           VARCHAR2(3)
     DATEMU                                            VARCHAR2(8)
    Voici le DESC de ma table principale.
    cette table se remplit automatiquement par des scripts, ma partie consiste a faire un calcul statistique sur les lignes de cette table.

    Le but c'est d'avoir un etat par CODEERR pour un mois donné, je rappelle que cette tache doit etre automatique c a d lancer chaque début de mois pour le mois précedent.

    Donc pour un mois donné :
    pour chaque CODEERR ==> la somme de COMPTEUR.

    ca je sais le faire c simple mais la partie qui m intrigue est l'etat de generer, par ce que la j ai donné un exemple tt simple, mais le vrai travail consiste à faire 150 requetes sur cette table avec differents critères de selection pour le calcul de la somme de COMPTEUR.

    Donc le probleme general c'est la generation de l'etat.

  8. #8
    Expert confirmé
    Avatar de laurentschneider
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2005
    Messages
    2 944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2005
    Messages : 2 944
    Points : 4 926
    Points
    4 926
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    select codeerr,sum(compteur) 
    from TOP10_PHOTO
    where datemu like to_char(add_months(sysdate,-1),'YYYYMM__') 
    group by codeerr;

  9. #9
    Expert confirmé
    Avatar de laurentschneider
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2005
    Messages
    2 944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2005
    Messages : 2 944
    Points : 4 926
    Points
    4 926
    Par défaut
    si tu veux créer un nombre dynamique de rapports, il faut oublier spool, passe donc par UTL_FILE et PL/SQL

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    106
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2004
    Messages : 106
    Points : 104
    Points
    104
    Par défaut
    Citation Envoyé par laurentschneider
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    select codeerr,sum(compteur) 
    from TOP10_PHOTO
    where datemu like to_char(add_months(sysdate,-1),'YYYYMM__') 
    group by codeerr;

    Merci qd mm.

  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    106
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2004
    Messages : 106
    Points : 104
    Points
    104
    Par défaut
    Citation Envoyé par laurentschneider
    si tu veux créer un nombre dynamique de rapports, il faut oublier spool, passe donc par UTL_FILE et PL/SQL

    Y a un tut sur UTL_FILE!?

  12. #12
    Membre expert

    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Janvier 2004
    Messages
    2 862
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 862
    Points : 3 609
    Points
    3 609

  13. #13
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    106
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2004
    Messages : 106
    Points : 104
    Points
    104
    Par défaut
    Merci, je pioche et je re.

  14. #14
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    106
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2004
    Messages : 106
    Points : 104
    Points
    104
    Par défaut
    bonjour,

    je reviens sur ce sujet car g vu les deux solutions proposées à savoir : spool et UTL_FILE.

    pour le choix je verrai plustard.

    En fait, je me retrouve face un autre problème, toujours avec le mm sujet, j essaye de faire un script UNIX qui se connecte à la base cible (ORACLE 8.1.7) et execute une simple requête dans un fichier req.sql et c'est le suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    #bin/ksh
     
    sqlplus $Var_Con
     
    host echo "Connexion Réussie."
     
    get req.sql
     
    run
     
    host echo "Execution requête reussie"
    Le probleme est que le script se connecte mais apres le sqplus $Var_Con plus rien, qd je fais un Ctrl+c la il prend en compte les autres commande, c a d à la sortie de sqlplus.

    J imagine que mon script unix attend l ecexution de chaque commande ce qui est normal.

    Donc ma question est la suivante :

    Comment pourrais je faire pour avoir le résultat souhaité (Executer un script unix et avoir le resultat de la requete) ?

    En vous remerciant.

  15. #15
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    106
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2004
    Messages : 106
    Points : 104
    Points
    104
    Par défaut
    Personne n a une idée

  16. #16
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    106
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2004
    Messages : 106
    Points : 104
    Points
    104
    Par défaut
    Citation Envoyé par insupien
    Personne n a une idée

    please

  17. #17
    Rédacteur

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 320
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 320
    Points : 3 798
    Points
    3 798
    Par défaut
    Tu ne cherches pas beaucoup :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    #bin/ksh
    sqlplus $Var_Con << EOF
    host echo "Connexion Réussie."
    start req.sql
    host echo "Execution requête reussie"
    EOF

  18. #18
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 075
    Points
    19 075
    Par défaut
    manque surment un ; ou / quelque part. à part ça, merci de lire les régles et la partie concernant le manque de réponse

  19. #19
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    106
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2004
    Messages : 106
    Points : 104
    Points
    104
    Par défaut
    Citation Envoyé par Jaouad
    Tu ne cherches pas beaucoup :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    #bin/ksh
    sqlplus $Var_Con << EOF
    host echo "Connexion Réussie."
    start req.sql
    host echo "Execution requête reussie"
    EOF

    Merci c cool ca marche

    Au fait je suis en plein mise en prod et en plsu sur un autre projet donc pas trop le temps de chercher.

    je te remercie en tt ca.

    On peut donc dire que ce sujet est

  20. #20
    Rédacteur

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 320
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 320
    Points : 3 798
    Points
    3 798
    Par défaut
    j'éspére que ce n'est pas une mise en prod Oracle sinon

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Réponses: 8
    Dernier message: 27/03/2015, 16h38
  2. [HighCharts] Graphe avec Highcharts et fichier csv
    Par jarbinx dans le forum Bibliothèques & Frameworks
    Réponses: 1
    Dernier message: 28/07/2014, 18h36
  3. [CSV] Affichage d'un fichier csv avec pagination
    Par arnoweb dans le forum Langage
    Réponses: 4
    Dernier message: 26/07/2006, 15h13
  4. Mise à jour d'une table avec un fichier csv
    Par blackangel dans le forum PostgreSQL
    Réponses: 4
    Dernier message: 26/05/2005, 14h46
  5. Mettre a jour BD avec fichier csv
    Par Looping94510 dans le forum PostgreSQL
    Réponses: 4
    Dernier message: 07/02/2005, 18h56

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