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 :

Prb Stockage dans un fichier


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Janvier 2006
    Messages
    137
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 137
    Par défaut Prb Stockage dans un fichier
    Bonjour,
    Je voudrais stocker toutes les lignes d'une table dans un fichier. J'ai fais un script en PL/SQL et lorsque je l'execute j'ai ce message : chemin de repertoire non valide.
    Est ce que quelqu'un pourrait m'aider, svp. Merci

    Voici mon code :

    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    create or replace PROCEDURE Ecrire_TABLE
    IS
    nomfichier varchar2(100);
    TMP varchar2(1000);
    id1 PICS.id%type;
    nomfic1 PICS.nom%type;
    description1 PICS.Auteur%type;
     
     
    CURSOR C1 IS SELECT id, nom, Auteur from PICS;
     
    fichier UTL_FILE.FILE_TYPE;
     
    BEGIN
     
      OPEN C1;
      LOOP
        FETCH C1 INTO id1, nomfic1, description1;
        EXIT WHEN C1%NOTFOUND;
     
     TMP := TMP || id1 || ' ' || nomfic1 || ' ' || description1;
     
             TMP := TMP || ',';
     
      END LOOP;
      CLOSE C1;
      TMP := TMP || ');';
      fichier := UTL_FILE.FOPEN('C:\','temp.csv','w');
     
     
       UTL_FILE.PUT_LINE(fichier,TMP);
       UTL_FILE.FFLUSH(fichier);
       UTL_FILE.FCLOSE(fichier);
     
        dbms_output.put_line (TMP);
     
    END;

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    349
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 349
    Par défaut
    fichier := UTL_FILE.FOPEN('C:\','temp.csv','w');
    Si tu utilises UTL_FILE, on doit en déduire que le PL/SQL s'exécute sur le noyau. En conséquence, il faudrait que le serveur connaisse ta machine et que tu lui passes un répertoire du style \\domaine\machine\partage et bien entendu que le serveur ait les autorisations nécessaires à cette écriture ...

    Si maintenant , le PL s'exécute à partir de FORMS, SQL Plus ou autre, il faut utiliser la package TEXT_IO ou WEB_UTIL s'il s'agit de FORMS 10G ...

    Cordialement

  3. #3
    Membre confirmé
    Inscrit en
    Janvier 2006
    Messages
    137
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 137
    Par défaut
    Merci pour la précision. Je vais voir ce que je peux trouver sur TEXt_IO

  4. #4
    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
    Par défaut
    Citation Envoyé par taska
    Si maintenant , le PL s'exécute à partir de FORMS, SQL Plus ou autre, il faut utiliser la package TEXT_IO
    TEXT_IO sous SQL*PLus ???? TEXT_IO est un built-in Forms builder et Report builder.

  5. #5
    Membre chevronné
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    349
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 349
    Par défaut
    méa culpa ..

  6. #6
    Membre confirmé
    Inscrit en
    Janvier 2006
    Messages
    137
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 137
    Par défaut
    J'ai regardé aussi du côté de create or replace directory, parce que je travail en local avec Oracle Express 10g sur ma machine. Par contre, lorsque j'essai d'executer :
    create or replace directory imagedir as 'c:\quickstart';

    ça me donne en retour privilèges insuffisants même en etant connecté en DBA.
    Si quelqu'un à une idée.
    Merci pour vos réponses.

  7. #7
    Membre éprouvé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    74
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France, Haute Vienne (Limousin)

    Informations forums :
    Inscription : Octobre 2006
    Messages : 74
    Par défaut
    Je pense qu'il faut que tu vérifies la valeur du paramètre utl_file_dir de ta base.

    Pour pouvoir écrire dans un fichier il faut que :
    soit ton répertoire fasse partie de l'utl_file_dir (les différents répertoires sont séparés par des virgules, ex : c:\quickstart, c:\temp)
    soit que tu ais mis *, ou répertoire_père/* comme valeur

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

Discussions similaires

  1. Stockage dans la Base de données VS Stockage dans un fichier
    Par hayaet dans le forum Optimisations
    Réponses: 3
    Dernier message: 25/11/2007, 21h39
  2. Réponses: 4
    Dernier message: 26/06/2006, 11h41
  3. [Tableaux] stockage de tableaux dans un fichier
    Par solitaire dans le forum Langage
    Réponses: 4
    Dernier message: 25/12/2005, 15h34
  4. Réponses: 8
    Dernier message: 18/07/2005, 14h04
  5. [Stockage] Image dans un fichier XML
    Par ovh dans le forum XML/XSL et SOAP
    Réponses: 4
    Dernier message: 30/04/2003, 16h21

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