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

PL/SQL Oracle Discussion :

Comment faire pour lister le contenu d'un répertoire en PL/SQL ?


Sujet :

PL/SQL Oracle

  1. #1
    Membre du Club
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Mars 2006
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Pays-Bas

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 46
    Points : 45
    Points
    45
    Par défaut Comment faire pour lister le contenu d'un répertoire en PL/SQL ?
    Bonjour,

    J'aimerais lister le contenu d'un répertoire en PL/SQL afin de réaliser une interface.

    J'ai des fichiers dont je ne connais pas la description qui arrive dans un répertoire.

    Je sais trés bien lire les fichiers et les importer grâce au package UTL_FILE mais je n'ai rien trouver pour lister les fichiers dans mon répertoire.

    Existe-t-il une fonction en PL/SQL pour lister le contenu d'un répertoire ?

    Merci d'avance

  2. #2
    Membre expert
    Avatar de bouyao
    Inscrit en
    Janvier 2005
    Messages
    1 778
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 778
    Points : 3 033
    Points
    3 033
    Par défaut
    Bonjour,

    en 9.2, Tu ne peut pas lister directement les fichiers par PL/SQL, Par contre tu peut utiliser java ou C extproc. Pour cela, une explication se trouve dans metalink : Note:296263.1

    Par contre sous 10g c'est une autre chose

  3. #3
    Membre du Club
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Mars 2006
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Pays-Bas

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 46
    Points : 45
    Points
    45
    Par défaut Vraiment trés rapide - Merci
    Je venais juste de la trouver, je l'a met pour ceux qui n'ont pas accés à Métalink.

    We cannot do this with PL/SQL directly, however, using Java (or a C extproc) we
    can do this pretty easily.

    You can for instance use a global temporary table. Call a stored procedure providing a
    DIRECTORY to scan and this procedure will put names of all of the files that are in that
    directory into this temp table.

    If you want to "filter" the files (eg: only interested in *.txt files), you'll use SQL "select * from dir_list where
    filename like '%.txt'" to do so.

    The implementation is:
    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
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
     
    1. ) ops$tkyte@8i> GRANT JAVAUSERPRIV to ops$tkyte
    2 /
     
     
    Grant succeeded.
     
    That grant must be given to the owner of the procedure.. Allows them to read
    directories.
     
    2. ) ops$tkyte@8i> create global temporary table DIR_LIST
    2 ( filename varchar2(255) )
    3 on commit delete rows
    4 /
     
    Table created.
     
     
    3.) ops$tkyte@8i> create or replace
    2 and compile java source named "DirList"
    3 as
    4 import java.io.*;
    5 import java.sql.*;
    6
    7 public class DirList
    8 {
    9 public static void getList(String directory)
    10 throws SQLException
    11 {
    12 File path = new File( directory );
    13 String[] list = path.list();
    14 String element;
    15
    16 for(int i = 0; i < list.length; i++)
    17 {
    18 element = list[i];
    19 #sql { INSERT INTO DIR_LIST (FILENAME)
    20 VALUES (:element) };
    21 }
    22 }
    23
    24 }
    25 /
     
    Java created.
     
    4. ) ops$tkyte@8i>
    ops$tkyte@8i> create or replace
    2 procedure get_dir_list( p_directory in varchar2 )
    3 as language java
    4 name 'DirList.getList( java.lang.String )';
    5 /
     
    Procedure created.
     
    5. ) ops$tkyte@8i>
    ops$tkyte@8i> exec get_dir_list( '/tmp' );
     
    PL/SQL procedure successfully completed.
     
    6. ) ops$tkyte@8i> select * from dir_list where rownum < 5;
     
    FILENAME
    ------------------------------------------------------
    data.dat
    .rpc_door
    .pcmcia
    ps_data

  4. #4
    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

  5. #5
    Membre du Club
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Mars 2006
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Pays-Bas

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 46
    Points : 45
    Points
    45
    Par défaut Balise [code]
    C'est fait

  6. #6
    Expert éminent sénior
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Points : 11 862
    Points
    11 862
    Par défaut
    Puissant, Java, tout de même !....

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 09/11/2010, 16h47
  2. Comment faire pour qu'une colonne s'agrandisse selon son contenu?
    Par loic20h28 dans le forum Windows Forms
    Réponses: 19
    Dernier message: 13/08/2008, 20h34
  3. Réponses: 2
    Dernier message: 09/06/2006, 15h49
  4. Réponses: 5
    Dernier message: 27/05/2006, 13h06
  5. Réponses: 3
    Dernier message: 22/05/2006, 11h03

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