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

Oracle Discussion :

Modification de l'encodage lors de l'extraction vers un fichier en csv


Sujet :

Oracle

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2009
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2009
    Messages : 22
    Points : 28
    Points
    28
    Par défaut Modification de l'encodage lors de l'extraction vers un fichier en csv
    Bonjour à tous.

    J'ai un soucis d'encodage lorsque je veux extraire un fichier en csv. J'arrive à l'extraire en encodage ANSI mais j'ai une contrainte prestataire qui le souhaite en UTF8.
    C'est une extraction qui doit être quotidienne, donc automatisé.

    Pour faire l'extraction, j'utilise sqlplus avec le script 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
    38
    39
     
    set echo off;
    set feed off;
    set verify off;
    set heading off;
    set embedded on;
    set newpage none;
    set linesize 100;
    set pagesize 10000;
     
    alter session set NLS_LANG=FRENCH_FRANCE.UTF8
     
    spool 'C:\Export\BaO\fic.csv';
     
    select 'CODECLIENT;CODETITRECLIENT;NOM' 
    from dual;
     
    select c.CODECLIENT || ';' || c.CODETITRECLIENT || ';' || c.NOM
    from clients c
    where c.datecreation >= (select to_date(INI_VAL, 'DD/MM/YYYY')
    						from DCENTER.DCENTER_BAO_INI
    						where INI_APPLI = 'BAO_DISTRI2CABESTAN'
    						and INI_PARAM = 'DATE_LAST_EXPORT')
    union
    select c.CODECLIENT || ';' || c.CODETITRECLIENT || ';' || c.NOM
    from clients c
    where c.datemodification >= (select to_date(INI_VAL, 'DD/MM/YYYY')
                                from DCENTER.DCENTER_BAO_INI
    							where INI_APPLI = 'BAO_DISTRI2CABESTAN'
    							and INI_PARAM = 'DATE_LAST_EXPORT')
    and c.datecreation < (select to_date(INI_VAL, 'DD/MM/YYYY')
    						from DCENTER.DCENTER_BAO_INI
    						where INI_APPLI = 'BAO_DISTRI2CABESTAN'
    						and INI_PARAM = 'DATE_LAST_EXPORT');
     
    spool off;
    set feed on;
    set pagesize 25;
    set echo on;
    Les champs CODECLIENT et CODETITRECLIENT sont des number, le champ NOM est un varchar.
    Si je fait la même extraction sans le champ NOM, je n'ai aucun problème l'encodage est bon, mais dès que je lui met le champ NOM il ne modifie pas l'encodage.

    J'ai testé manuellement dans une fenêtre de commande en faisant ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    set NLS_LANG = FRENCH_FRANCE.UTF8
    sqlplus storeland/storeland@STOR-ORCL @C:\Export\BaO\export.sql
    là, mon fichier avait le bon encodage, mais si je met les mêmes infos dans un .bat, j'ai toujours mon problème d'encodage.

    A noter l'encodage de ma base est celui ci: FRENCH_FRANCE.WE8MSWIN1252

    J'ai chercher sur le web, mais j'ai pas trouver de solution à mon problème.
    Peut être que je loupe un truc sur mon.bat ou dans mon script.

    Merci pour votre aide

  2. #2
    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 vous devez transcoder les valeurs en UTF comme dans l'exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    select 12,
           UTL_I18N.raw_to_char(UTL_I18N.string_to_raw('Téste','utf8'))
    from dual

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2009
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2009
    Messages : 22
    Points : 28
    Points
    28
    Par défaut
    Bonjour mnitu,

    merci pour ta réponse.
    Je ne l'ai pas essayé car j'ai trouvé une autre solution avant de lire ton commentaire.

    j'ai utilisé la fonction convert comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select convert(c.NOM, 'UTF8', 'WE8MSWIN1252') from clients c
    Et du coup mon fichier est bien encoder en UTF8.

    comme j'avais d'autres champs de type char/varchar et que je doit sortir un fichier csv, j'ai encapsuler tous mes champs dans le convert en faisant ceci.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    select convert(c.CODECLIENT || ';' || c.CODETITRECLIENT || ';' || c.NOM || ';' || c.PRENOM || ';' || CODETYPEVOIE || ';' || LIBELLEVOIE || ';' || LIEUDIT || ';' || CODEPOSTAL || ';' || VILLE, 'UTF8', 'WE8MSWIN1252')
    from clients c
    pour une doc aller ici
    et je me suis basé le dernier message présent dans ce sujet http://www.developpez.net/forums/d14...stion-accents/

    Bonne journée

  4. #4
    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 Eskehnach Voir le message
    ...
    j'ai utilisé la fonction convert comme ceci
    ...
    Convert
    Note:
    Oracle discourages the use of the CONVERT function in the current Oracle Database release. The return value of CONVERT has a character data type, so it should be either in the database character set or in the national character set, depending on the data type. Any dest_char_set that is not one of these two character sets is unsupported. The char argument and the source_char_set have the same requirements. Therefore, the only practical use of the function is to correct data that has been stored in a wrong character set.
    Values that are in neither the database nor the national character set should be processed and stored as RAW or BLOB. Procedures in the PL/SQL packages UTL_RAW and UTL_I18N—for example, UTL_RAW.CONVERT—allow limited processing of such values. Procedures accepting a RAW argument in the packages UTL_FILE, UTL_TCP, UTL_HTTP, and UTL_SMTP can be used to output the processed data

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2009
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2009
    Messages : 22
    Points : 28
    Points
    28
    Par défaut
    Bonjour mnitu,

    Pris sur d'autre sujet, je ne reviens que maintenant vers toi.

    Merci pour l'info, du coup j'ai mis en application ta réponse.

    Et forcément ça marche.

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

Discussions similaires

  1. Erreur encodage lors de l'importation d'un fichier CSV
    Par mrbrams dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 15/06/2015, 11h36
  2. [AC-2010] Ajout d'enregistrement lors d une exportation ver un fichier texte
    Par baloo42400 dans le forum Access
    Réponses: 4
    Dernier message: 10/04/2014, 15h51
  3. [IP-2007] PB lors de l'extraction vers exel
    Par Merioty dans le forum InfoPath
    Réponses: 2
    Dernier message: 17/10/2013, 09h13
  4. Réponses: 12
    Dernier message: 17/07/2009, 17h33
  5. Encodage lors de l'injection d'un fichier sql
    Par sabotage dans le forum Outils
    Réponses: 1
    Dernier message: 16/10/2007, 00h12

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