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 :

lob, accent et loadclobfromfile


Sujet :

PL/SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2010
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2010
    Messages : 9
    Par défaut lob, accent et loadclobfromfile
    bonjour

    j'utilise une base XE avec comme paramètre de langue :
    PARAMETER VALUE
    NLS_LANGUAGE FRENCH
    NLS_ISO_CURRENCY FRANCE
    NLS_DATE_LANGUAGE FRENCH
    NLS_SORT FRENCH
    NLS_CHARACTERSET AL32UTF8

    Mais lorsque que fais le code suivant :
    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
     
    PROCEDURE load_file (p_file_name  IN  my_docs.notice%TYPE) AS
      v_bfile      BFILE;
      v_blob       CLOB;
     
      LN$src_off PLS_INTEGER := 1 ;
      LN$dst_off PLS_INTEGER := 1 ;
      LN$Langctx NUMBER := dbms_lob.default_lang_ctx ;
      LN$Warn NUMBER;
     
     
    BEGIN
     
      INSERT INTO my_docs (id, notice, doc)
      VALUES (my_docs_seq.NEXTVAL, substr(p_file_name,1, length(p_file_name) -4), empty_clob())
      RETURN doc INTO v_blob;
     
      v_bfile := BFILENAME('FICHIERS_IN', p_file_name);
      Dbms_Lob.Fileopen(v_bfile, Dbms_Lob.File_Readonly);
      dbms_lob.loadclobfromfile(
                                        v_blob,                -- CLOB de destination
                                        v_bfile,               -- Pointeur fichier en entrée
                                        Dbms_Lob.Getlength(v_bfile),                -- Nombre d'octets à lire
                                        LN$src_off,            -- Position source de départ
                                        LN$dst_off,            -- Position destination de départ
                                        dbms_lob.default_csid, -- CSID
                                        LN$Langctx,            -- Contexte langue
                                        LN$Warn);              -- Message d'avertissement
     
      Dbms_Lob.Fileclose(v_bfile);
    COMMIT;
     
       EXCEPTION
         WHEN OTHERS THEN
           debug('erreur !!! load_file :' || to_char( SQLCODE ) || ' = ' || to_char( SQLERRM ), p_file_name);
     
    END;
    Le fichier est bien intégré.
    Sauf que tout les accents ainsi que les lettres suivante sont remplacée par un ? à l'envers sous toad.
    Par exemple :
    vid¿monoface => vidéomonoface
    D¿calisations$g¿nomie politique => Délocalisation$géconomie politique

    J'ai essayé de fixé le dbms_lob.default_csid à différente valeur et pas d'amélioration.

    Mes fichiers sont des fichiers texte simple avec juste des crlf pour la fin de ligne.

    j'ai fais une autre version avec insertion dans un blob.
    l'insertion se fais bien mais c'est lors de l'indexation que les accents ne sont pas pris en compte.

    auriez vous une idée?

  2. #2
    Rédacteur
    Avatar de Vincent Rogier
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 373
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 373
    Par défaut
    Ton fichier, il est encodé comment ? En UTF8 ou en ANSI ?

    Il y a une différence en comment TOAD affiche ta données et comment elle est réellement stockée

    Si ton fichier est un fichier UTF8, utilises un NCLOB au lieu d'un CLOB....
    Vincent Rogier.

    Rubrique ORACLE : Accueil - Forum - Tutoriels - FAQ - Livres - Blog

    Vous voulez contribuer à la rubrique Oracle ? Contactez la rubrique !

    OCILIB (C Driver for Oracle)

    Librairie C Open Source multi-plateformes pour accéder et manipuler des bases de données Oracle

  3. #3
    Membre averti

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2010
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2010
    Messages : 9
    Par défaut
    Mon fichier est encodé en ANSI.

    Je viens de faire l'essai d'une conversion entre un BLOB qui s'affiche bien et un CLOB et toujours la même chose.

    Je vais faire l'essai avec un NCLOB et mettre un fichier UTF8 pour voir si j'ai toujours le problème.

    Les tests avec UTF8 et NCLOB ne donne rien de mieux.

    Après pas mal de recherche j'ai trouvé.

    il fallait mettre la valeur 31 (WE8ISO8859P1) dans le paramètre : bfile_csid.

    Merci pour ta réponse.

    bonne journée.

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

Discussions similaires

  1. Comment afficher les accent sous mysql v4.0.13
    Par buildozer dans le forum Requêtes
    Réponses: 2
    Dernier message: 17/06/2003, 09h33
  2. Accents
    Par Sylvain Leray dans le forum XMLRAD
    Réponses: 2
    Dernier message: 26/02/2003, 16h17
  3. identification lettre (pb accent)
    Par scorbo dans le forum C
    Réponses: 5
    Dernier message: 14/12/2002, 02h59
  4. que deviennent mes accents ?!
    Par petitdns dans le forum XSL/XSLT/XPATH
    Réponses: 5
    Dernier message: 28/11/2002, 09h32
  5. [Accents - XML] Problème de codage non supporté !!
    Par Smortex dans le forum Composants VCL
    Réponses: 6
    Dernier message: 24/11/2002, 11h00

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