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 :

CLOB vers Flat file UNIX


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Inscrit en
    Août 2004
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 5
    Par défaut CLOB vers Flat file UNIX
    Bonjour,

    Je voudrais envoyer un CLOB de plus de 32K dans un ficher TXT unix.
    J'ai fais un essai avec UTL_FILE mais ca ne fonctionne pas (limitation 32k)

    y a t'il une solution ?

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

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    D'après la note 358641.1 de Metalink:
    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
    create or replace PROCEDURE clob_to_file (p_dir IN VARCHAR2, p_file IN VARCHAR2, p_clob IN CLOB) IS
    l_output UTL_FILE.file_type;
    l_amt NUMBER DEFAULT 32000;
    l_offset NUMBER DEFAULT 1;
    l_length NUMBER DEFAULT NVL (DBMS_LOB.getlength (p_clob), 0);
    x varchar2(32760);
    BEGIN
    l_output := UTL_FILE.fopen (p_dir, p_file, 'w', 32760);
    WHILE (l_offset < l_length) LOOP
    dbms_lob.read (p_clob, l_amt, l_offset, x);
    UTL_FILE.put (l_output, x);
    UTL_FILE.fflush (l_output);
    UTL_FILE.new_line (l_output);
    l_offset := l_offset + l_amt;
    END LOOP;
     
    UTL_FILE.fclose (l_output);
    END clob_to_file;
    /
    Tous simplement une boucle pour écrire par paquet de 32000 caractères

  3. #3
    Nouveau membre du Club
    Inscrit en
    Août 2004
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 5
    Par défaut
    Citation Envoyé par orafrance Voir le message
    D'après la note 358641.1 de Metalink:
    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
    create or replace PROCEDURE clob_to_file (p_dir IN VARCHAR2, p_file IN VARCHAR2, p_clob IN CLOB) IS
    l_output UTL_FILE.file_type;
    l_amt NUMBER DEFAULT 32000;
    l_offset NUMBER DEFAULT 1;
    l_length NUMBER DEFAULT NVL (DBMS_LOB.getlength (p_clob), 0);
    x varchar2(32760);
    BEGIN
    l_output := UTL_FILE.fopen (p_dir, p_file, 'w', 32760);
    WHILE (l_offset < l_length) LOOP
    dbms_lob.read (p_clob, l_amt, l_offset, x);
    UTL_FILE.put (l_output, x);
    UTL_FILE.fflush (l_output);
    UTL_FILE.new_line (l_output);
    l_offset := l_offset + l_amt;
    END LOOP;
     
    UTL_FILE.fclose (l_output);
    END clob_to_file;
    /
    Tous simplement une boucle pour écrire par paquet de 32000 caractères

  4. #4
    Nouveau membre du Club
    Inscrit en
    Août 2004
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 5
    Par défaut
    Super sa fonctionne, grand merci

  5. #5
    Membre expérimenté Avatar de DAB.cz
    Inscrit en
    Octobre 2006
    Messages
    221
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 221
    Par défaut
    Mais attention!!!

    Aussi d'après la note 358641.1 de Metalink pour cette solution:
    The total data is 84000, the output file is 84003. This shows there were 3 writes to a file and the 3 extra characters are due to the NEW_LINE command.

    Pour 10g: http://www.developpez.net/forums/sho...d.php?t=424076

    DAB

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

Discussions similaires

  1. Conseil pour choisir DBI avec flat file
    Par florent dans le forum SGBD
    Réponses: 2
    Dernier message: 10/08/2009, 23h26
  2. Programme windows / File Unix
    Par habibdu70 dans le forum Windows Forms
    Réponses: 3
    Dernier message: 01/12/2008, 15h37
  3. Conversion d'un clob vers un fichier sql
    Par tipon20 dans le forum PL/SQL
    Réponses: 2
    Dernier message: 17/10/2008, 07h20
  4. Rediriger LS vers un file descriptor ?
    Par jayfaze dans le forum C
    Réponses: 1
    Dernier message: 09/04/2008, 23h55
  5. [Informatica 7.1.2] Flat file
    Par macleod dans le forum Alimentation
    Réponses: 1
    Dernier message: 05/07/2007, 16h22

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