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 :

[debutant] question sur Spool


Sujet :

SQL Oracle

  1. #1
    Membre éclairé
    Inscrit en
    Janvier 2007
    Messages
    265
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 265
    Par défaut [debutant] question sur Spool
    Bonjour Je dois utiliser spool pour generer un fichier en sortie jusqu'a la rien d'exceptionnel, ca a meme bien marche.
    Je fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    spool nom.txt
    requete
    puis apres spool off.
    Maintenant ce que je desire faire c'est remplacer le 'nom' par une variable, qui sera la resultante d'une requete du genre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    select concat(to_char(sysdate,'DD/MM/YYYY HH24:MI:SS'),'ChaineConcatenee')FROM DUAL;
    Es ce que l'on peut proceder ainsi ????
    Qu'es ce qu'il faut modifier pour arriver au bon resultat

    En vous remerciant a l'avance

  2. #2
    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
    Par défaut
    quelle est ta version?

    dans une version récente, tu peux employer

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    spool chaine_&_DATE.txt
    bla
    spool off

  3. #3
    Membre éclairé
    Inscrit en
    Janvier 2007
    Messages
    265
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 265
    Par défaut
    C'est Oracle 9i

  4. #4
    Membre éclairé
    Inscrit en
    Janvier 2007
    Messages
    265
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 265
    Par défaut
    D'autre part quand je met DATE_&_chaine.txt
    Ben j'obtiens DATE_&_chaine.txt alors que je desirerai quelque chose du genre 03-07-2007_&_chaine.txt ou bien 03072007-chaine.txt
    C'est pour ça que j'ai pense aux variables.

    Cordialement

  5. #5
    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
    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
     
    SQL> set def on
    SQL> col file_name new_v file_name nopri
    SQL> select to_char(sysdate,'YYYY-MM-DD"_chaine.txt"') file_name from dual;
     
     
     
     
    SQL> spool &file_name
    SQL> spool
    currently spooling to 2007-07-03_chaine.txt
    SQL> spool off

  6. #6
    Membre éclairé
    Inscrit en
    Janvier 2007
    Messages
    265
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 265
    Par défaut
    J'ai essaye ton script Laurent mais ça n'a pas l'air de marcher
    Je ne sais pas pourquoi, je suis entrain d'essayer de comprendre.
    Je te dis quoi, une fois fini

  7. #7
    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
    Par défaut
    tu employes bien sqlplus?

  8. #8
    Membre éclairé
    Inscrit en
    Janvier 2007
    Messages
    265
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 265
    Par défaut
    tu employes bien sqlplus?
    Absolument

  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
    Par défaut
    bien, alors que te donnes ? fais un copier-coller stpl

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    set def on
    col file_name new_v file_name nopri
    select to_char(sysdate,'YYYY-MM-DD"_chaine.txt"') file_name from dual;
    spool &file_name
    spool
    spool off

  10. #10
    Membre éclairé
    Inscrit en
    Janvier 2007
    Messages
    265
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 265
    Par défaut
    Faudrait peut etre que j'explique le contexte, deja mon server Oracle se trouve sur un server Linux Red hat, ensuite ce script sql est lui meme lance par un script shell. Cependant en l'executant de facon brute via Toad j'ai quand meme un gros soucis parce qu'il ne connait pas
    J'aimerai bien le faire sous sql ou pl-sql. Je trouve ça beaucoup plus elegant.

    Bien cordialement

  11. #11
    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
    Par défaut
    mais je ne pense pas que ça marche sous Toad, utilise sqlplus!

    >>> tu employes bien sqlplus?
    > Absolument
    hmm

  12. #12
    Membre éclairé
    Inscrit en
    Janvier 2007
    Messages
    265
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 265
    Par défaut
    tu employes bien sqlplus?
    Absolument
    hmm
    Je n'ai utilise Toad que tout a la fin, histoire d'etre sure que ca ne marche pas. Sur ma machine je n'ai qu'un vieil Sqlplus -herite de la periode postsovietique- c'est fou ce que j'adore ce soft. Mais pas le choix sous Linux y a que ça par defaut, pas vraiment le choix. Toad a la fin m'a permis de comprendre que mon server Oracle ne semble pas reconnaitre justement le
    Alors pourquoi ??? Oracle sous Linux different d'Oracle sous Windows ???
    Je ne crois pas une seule seconde, Erreur de syntax ??? Peut etre, j'ai regarde dans le livre d'sql d'Olivier Teste et Xtian Soutou que j'ai sous les yeux, il semble que ce bout de code
    definisse une variable d'environnement Oracle ??? Me trompe-je ???
    Alors voila ou j'en suis. Je continue a investiguer.
    Je tiens quand meme a te remercier pour tes interventions.
    Cordialement

    PS: Toad n'est pas installe pour les pauvres externes -comme moi, attention je ne suis pas un pleurnichard - ou comme on les appelle les prestas. C'est une licence assez chere du reste, les externes n' y ont pas droit.
    Voili voila

  13. #13
    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
    Par défaut
    set dans toad != set dans sqlplus
    spool dans toad != spool dans sqlplus

    je pense que set define off marchait avec sqlplus d'Oracle 7. Si tu as Oracle 6, tu peux toujours employer set scan off, mais je ne crois pas qu'il y ait jamais eu d'Oracle 6 pour Linux... alors tu ferais bien de me donner l'output depuis ton client sqlplus

    > qu'un vieil Sqlplus
    quelle version?

  14. #14
    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
    Par défaut
    Citation Envoyé par smutmutant2003
    C'est une licence assez chere du reste, les externes n' y ont pas droit.
    C'est quoi assez cher? une journée de travail?

  15. #15
    Membre éclairé
    Inscrit en
    Janvier 2007
    Messages
    265
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 265
    Par défaut
    On a trouve une solution de subtition qui ne nessecite pas l'intervention de SQL,mais celle du Shell, je reprendrai le fil de cette conversation qui m'a l'air passionante, et tres instructive.
    J'utilise en fait une version d'Oracle 9.2i pour Linux.
    Des que j'aurai acces au log je te reviendrai vers toi.
    En tout cas je te remercie pour tes interventions, elles m'ont beaucoup aide.

    Cordialement

  16. #16
    Membre éclairé
    Inscrit en
    Janvier 2007
    Messages
    265
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 265
    Par défaut
    Mon probleme sur Spool et nom du fichier a été completement résolu, avec une utilisation en tandem du sql et du shell.
    La question que j'aurai maintenant c'est la suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    spool cheminlinux/nom.txt
    select * from mytable where mytable.champs1="clause";
    spool off.
    En fait il semble que spool genere un fichier sur le dossier courrant, et moi je voudrai qu'il soit directement sur un autre chemin. Je suis sous environnement Linux Redhat, alors es ce que cette syntaxe avec le spool est correcte ???
    C'est-à-dire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    spool ./cheminlinux/nom.txt
    Cordialement.

  17. #17
    Rédactrice

    Avatar de kalyparker
    Femme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Janvier 2007
    Messages
    1 327
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 327
    Par défaut
    bonjour,

    il me semble que dans le sql tu peux recuperer les variables shell. un truc du style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    spool $monchemin/nomfichier.txt
    a tester...
    It isn't that they can't see the solution, it's that they can't see the problem.
    Mes Articles et Traductions (Microstrategy, Css et Javascript)
    Si vous souhaitez contribuer à la rubrique BI, contactez-moi ou tout autre membre de l'équipe BI par MP.

  18. #18
    Membre éclairé
    Inscrit en
    Janvier 2007
    Messages
    265
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 265
    Par défaut
    Disons que j'ai deja reussi a traiter ça avec le shell, ce qui m'interresse maintenant c'est de faire de façon plus élegante, à savoir générer directement un fichier dans le dossier concerné, sans avoir a le traiter en shell, tout au moins pour le deplacement.
    Voili voilà.

    Cordialement

  19. #19
    Rédactrice

    Avatar de kalyparker
    Femme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Janvier 2007
    Messages
    1 327
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 327
    Par défaut
    dans ce cas là, je crois qu'il est possible de déclarer dans oracle un repertoire.
    (je m'en servais avec utl_file)
    je pense que tu peux t'en servir dans ce cas là.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    CREATE DIRECTORY monrepertoire AS 'c:\monchemin';
     
    // avec utl_file ça marche comme ça
    declare
    monfichier UTL_FILE.FILE_TYPE;
    begin
    monfichier := UTL_FILE.FOPEN('monrepertoire','test.txt','r');
    UTL_FILE.FCLOSE(monfichier);
    end;
     
    // peut être qu'avec spool ça marche comme ça : a tester
    spool monrepertoire/monfichier.txt
    It isn't that they can't see the solution, it's that they can't see the problem.
    Mes Articles et Traductions (Microstrategy, Css et Javascript)
    Si vous souhaitez contribuer à la rubrique BI, contactez-moi ou tout autre membre de l'équipe BI par MP.

  20. #20
    Membre éclairé
    Inscrit en
    Janvier 2007
    Messages
    265
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 265
    Par défaut
    Attention je suis sous environnement Linux, donc la creation de dossier n'est pas evidente, mais la le

    C'est la création d'une librairie, or moi j'ai besoin uniquement déposer un fichier génére par spool dans un dossier qui existe déja et sur lequel j'ai des droits en écriture. C'est vrai que cette façon de faire est élégante et marche même bien sous windows, mais Linux en matière de création, droit en écriture c'est parfois la galère, surtout que là on me tolère sur le server, parce le server de base est installé.

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

Discussions similaires

  1. [Debutant] Question sur Cours SQL Pro
    Par etiennegaloup dans le forum Langage SQL
    Réponses: 5
    Dernier message: 25/10/2005, 09h50
  2. [debutant] question sur JCreator ? (son classpath)
    Par easyman dans le forum Environnement de Développement Intégré (EDI)
    Réponses: 3
    Dernier message: 25/10/2005, 08h56
  3. [Debutant] Question sur la redéfinition de getPreferredSize
    Par etiennegaloup dans le forum Débuter
    Réponses: 1
    Dernier message: 23/09/2005, 20h02
  4. [Debutant] Question sur le system.out.print
    Par thom02 dans le forum Langage
    Réponses: 8
    Dernier message: 19/07/2005, 18h19
  5. [debutant] Questions sur 1 futur projet
    Par cyrull22 dans le forum XML/XSL et SOAP
    Réponses: 3
    Dernier message: 28/04/2003, 21h49

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