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 :

Ouvrir un fichier text sans retour ligne


Sujet :

PL/SQL Oracle

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Octobre 2009
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 3
    Points : 1
    Points
    1
    Par défaut Ouvrir un fichier text sans retour ligne
    Bonjour,

    voilà, sur oracle j ai l habitude d ouvrir des fichiers text comportant des retour à la ligne avec utl_file.

    En gros la lecture d'une ligne d un fichier se fait avec cette instruction :

    Utl_File.Get_Line (fichier,buffer);

    Mais cela ne fonctionne que si le fichier text est composé de carriage return (retour à la ligne).

    Or là je dois lire des enregistrements mis bout à bout dans un fichier enorme (40 mega) et le get_line ne fonctionne pas car la ligne rammenée est bien trop longue :

    tout le fichier texte tient sur une seule ligne (c'est un fichier que je recois de l exterieur et dont je ne pourrai jamais faire changer la structure par ceux qui le fournissent)

    On sait qu'on passe à l enregistrement suivant car on sait que chaque enregistrement fait 320 caracteres.

    Quelqu'un sait il comment traiter ce genre de fichier text ?

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

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

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

    En 11G, avec l'utilisation d'une table externe il est possible d'exécuter une instruction avant la lecture du fichier. Vous pourriez alors découper la ligne en plusieurs. Plus de détails ici: http://technology.amis.nl/blog/6135/...rnal-table-use

    Sinon j'essaierai de partir sur une solution de type chargement du fichier dans un CLOB à l'aide d'un BFILE. Et après, manipulation du CLOB pour le découper en VARCHAR2(320).

  3. #3
    Expert éminent sénior Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Points : 11 252
    Points
    11 252
    Par défaut
    Je pense que je créerais une table externe au lieu d’employer UTL_FILE. Mais UTL_FILE semble capable de gérer votre cas.

  4. #4
    Nouveau Candidat au Club
    Inscrit en
    Octobre 2009
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    En fait je suis en 9i.

    Citation Envoyé par mnitu Voir le message
    Je pense que je créerais une table externe au lieu d’employer UTL_FILE. Mais UTL_FILE semble capable de gérer votre cas.
    Tres bien et comment faire avec UTL_FILE pour gérer le cas ?

    (de mon coté je me renseigne pour cette histoire de table externe que je ne connais pas)

  5. #5
    Nouveau Candidat au Club
    Inscrit en
    Octobre 2009
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Bon pour l UTL_FILE je n'ai rien trouvé.

    Par contre pour l utilisation de la table externe j'ai bien des choses qui se rapprochent de ce que je veux :

    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
    create table ext_table_fixed (
       field_1 char(4),
       field_2 char(30)
    )
    organization external (
       type       oracle_loader
       default directory ext_dir
       access parameters (
         records delimited by newline
         fields (
           field_1 position(1: 4) char( 4),
           field_2 position(5:30) char(30)
        )
      )
      location ('file')
    )
    reject limit unlimited;

    cela dit le records delimited by newline
    ne convient pas dans mon cas puisque tout el fichier tient sur une seule ligne sans aucun carriage return (sauf en fin de fichier).

  6. #6
    Expert éminent sénior Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Points : 11 252
    Points
    11 252
    Par défaut
    Citation Envoyé par Harrys Voir le message
    ...
    cela dit le records delimited by newline
    ne convient pas dans mon cas puisque tout el fichier tient sur une seule ligne sans aucun carriage return (sauf en fin de fichier).
    Ne mets pas de records delimited by newline.

  7. #7
    Expert éminent sénior Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Points : 11 252
    Points
    11 252
    Par défaut
    Citation Envoyé par Harrys Voir le message
    En fait je suis en 9i.



    Tres bien et comment faire avec UTL_FILE pour gérer le cas ?

    (de mon coté je me renseigne pour cette histoire de table externe que je ne connais pas)
    Avez-vous essayé d'appeler UTL_FILE.GET_LINE en lui passant comme troisième paramètre (linesize) la valeur 320 ?

Discussions similaires

  1. Comment en VBA modifier un fichier texte sans l'ouvrir dans Excel ?
    Par shadok6 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 31/10/2008, 13h54
  2. Comment écrire dans un fichier texte sans sauter les lignes
    Par gogéta91 dans le forum Scripts/Batch
    Réponses: 5
    Dernier message: 29/07/2008, 18h56
  3. Zone texte sans retour à la ligne à forcer
    Par rjcab dans le forum IHM
    Réponses: 5
    Dernier message: 30/06/2008, 15h27
  4. lecture d'un fichier texte SANS l'ouvrir
    Par gratesnif dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 07/08/2007, 13h50
  5. [C#] Lecture d'un fichier texte sans terminaison de ligne
    Par heavydrinker dans le forum Windows Forms
    Réponses: 4
    Dernier message: 17/10/2006, 10h03

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