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 :

[oracle 9i] Conversion Charset


Sujet :

Oracle

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 55
    Points : 60
    Points
    60
    Par défaut [RESOLU][oracle 9i] Conversion Charset
    Bonjour,

    j'ai actuellement quelques petits soucis d'encodage lors d'une migration de données d'une appli V4 à une appli v5.

    En effet, les données migrées et en particulier, des libellés 'texte' au sein d'une table comporte des ? (à l'envers) à la place des apostrophes et des accentuations.

    Lors d'un export, il est dit au debut du log que l'encodage de la base et celui du serveur sont différents mais qu'une conversion est possible.

    Connaissez vous l'option à ajouter à l'export pour faire cette conversion ?

    Merci d'avance.

  2. #2
    Membre expert

    Profil pro
    Inscrit en
    Février 2006
    Messages
    3 437
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 3 437
    Points : 3 597
    Points
    3 597
    Par défaut
    En fait il n'y a pas d'option pour cela. Avec Oracle 9, toutes les données sont exportées dans le jeu de caractères de la base de données sauf les données du dictionnaire (nom des tables, colonnes, index, code source des triggers, procédures, fonctions, packages, etc.) qui sont exportées dans le jeu de caractère défini par la variable d'environnement NLS_LANG.

    Voir http://download-uk.oracle.com/docs/c...02.htm#1006481

    A l'import, il peut y avoir 1 ou 2 conversions:
    - 1 entre le jeu défini dans le fichier export et celui par NLS_LANG de la session d'exécution de l'import (s'ils différent)
    - 1 entre l'étape précedente et le jeu de caractères de la base. (Note Metalink:
    Export/Import and NLS Considerations
    Doc ID: Note:15095.1 Type: FAQ
    Last Revision Date: 07-JUL-2006 Status: PUBLISHED).

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 55
    Points : 60
    Points
    60
    Par défaut
    Merci pour ces renseignements.

    il s'avère donc que :

    Sur le serveur V4 :

    * la DATABASE est en WE8ISO8859P1
    * le client (le serveur lui même pour l'export, via putty) est en NLS_LANG=FRENCH_FRANCE.WE8ISO8859P1

    Sur le serveur V5 :

    * le client (le serveur lui même pour l'import, via putty) est en NLS_LANG=FRENCH_FRANCE.WE8ISO8859P1
    * la DATABASE est en WE8ISO8859P15

    un select sur des libellés de ma table "donnee" m'affiche encore des ? (à l'envers)...

    ps : question subsidiaire ^^
    Les libellés de cette table ont été, soit remplis via un formulaire (application J2EE), soit importé à partir d'un fichier texte (toujours via l'appli). Se peut-il qu'il y est des encodages différents au sein de la même table ? Sachant que l'ancienne appli (V4) les affiche toutes correctement...

    Merci et @ bientôt

  4. #4
    Membre expert

    Profil pro
    Inscrit en
    Février 2006
    Messages
    3 437
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 3 437
    Points : 3 597
    Points
    3 597
    Par défaut
    Le jeu de caractères utilisé par une colonne d'une table ne peut pas changer (sauf si on change le type de colonne). Par contre si la partie jeu de caractères NLS_LANG correspond au jeu de la base, alors Oracle ne fait aucune vérification et aucune conversion: il stocke directement la valeur binaire du caractère donné par le client: dans ce cas là, il peut y avoir incohérence.

    On peut afficher la représentation binaire de la valeur d'une colonne avec:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT dump(<colonne>) FROM <table>;
    Si utilise:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT dump(<colonne>, 1017) FROM <table>
    seuls les caractères valides du jeu de caractères de la base dont affichés.

    Pour comparer les jeux de caractères Oracle en question, on peut utiliser les code pages Windows correspondantes:http://www.microsoft.com/globaldev/reference/iso.mspx

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 55
    Points : 60
    Points
    60
    Par défaut
    Merci beaucoup Pierre, pour toutes ces informations

    J'ai refais mon export/import en vérifiant bien mes variables NLS_LANG et le problème est résolu --> affichage correct sur la base migrée.

    Encore merci et @ bientôt

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

Discussions similaires

  1. trigger before conversion charset
    Par temoanatini dans le forum SQL Procédural
    Réponses: 0
    Dernier message: 20/12/2010, 17h45
  2. Conversion Charset File/InputStream
    Par lifty dans le forum Entrée/Sortie
    Réponses: 6
    Dernier message: 10/02/2010, 23h19
  3. Conversion charset French_CI_AS > UTF-8
    Par Myrza dans le forum Développement
    Réponses: 1
    Dernier message: 13/11/2009, 11h24
  4. [Oracle 9] Conversion d'un format number en heure
    Par Rycku dans le forum Langage SQL
    Réponses: 4
    Dernier message: 16/06/2006, 11h48
  5. [jdbc][oracle] conversion implicite erronée
    Par Jack Huser dans le forum JDBC
    Réponses: 2
    Dernier message: 30/06/2005, 10h23

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