Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2077 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  SQL Loader - problème d'encodage des caractères accentués

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

SQL Loader - problème d'encodage des caractères accentués

n°1732149
josserand_​joss
Posté le 15-05-2008 à 11:40:12  profilanswer
 

Bonjour,
 
J'ai un problème d'encodage de caractère avec le Sql Loader.
 
Dans mon fichier plat, j'ai une chaine de type :
...;réorganisation du réseau 5ème;...
 
Avec le sqlldr d'Oracle 8i, je retrouve cette chaine en base :
...;riorganisation du riseau 5hme;...
 
Avec le sqlldr d'Oracle 10g, je retrouve cette chaine en base :
...;r¿organisation du r¿seau 5¿me;...
 
Et c'est pareil pour tous les caractères accentués, et d'autres encore.
 
Qu'est-ce qui entraine une telle différence ?
Y a-t-il une solution pour encoder correctement lors de l'intégration (fonction Oracle ou autre) ?
 
Merci d'avance  :)

mood
Publicité
Posté le 15-05-2008 à 11:40:12  profilanswer
 

n°1732160
casimimir
Posté le 15-05-2008 à 12:00:10  profilanswer
 

il faut certainement voir les parametres NLS de ton instance et également ceux lors de ta session lors du chargement.

n°1732273
josserand_​joss
Posté le 15-05-2008 à 16:13:16  profilanswer
 

Je viens de me renseigner sur les paramètres NLS, et de regarder mon NLS_CHARACTERSET. Pour la base (NLS_DATABASE_PARAMETERS), sa valeur est 'WE8ISO8859P1'.
Par contre, pour l'instance et la session, il ne me renvoie rien.
 
J'ai trouvé une doc (http://fadace.developpez.com/oracle/nls/) qui semble exposer le problème... mais je ne suis pas sûr de tout saisir.
Comment faire pour changer ce paramètre NLS_CHARACTERSET de manière provisoire ?
 
Merci encore !! :jap:

n°1732277
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 15-05-2008 à 16:24:41  profilanswer
 

josserand_joss a écrit :


Comment faire pour changer ce paramètre NLS_CHARACTERSET de manière provisoire ?
 
Merci encore !! :jap:


alors déjà veux tu modifier le charset en UTF-16 (AL16UTF16). si oui, alors oublie NLS_CHARACTERSET et modifie plutot NLS_NCHAR_CHARACTERSET (c'est le charset des types NCHAR, NVARCHAR...). sinon c'est bien NLS_CHARACTERSET
pour le modifier, ça dépend de ta version d'Oracle : ALTER DATABASE CHARACTER SET jusqu'à Oracle 9, ou CSALTER pour Oracle 10 et suivants

n°1732352
josserand_​joss
Posté le 15-05-2008 à 17:47:08  profilanswer
 

A vrai dire, je ne saurais pas répondre à ta question, dans le sens où je ne connais pas le comportement du SQL Loader (et encore moins le type de données qu'il considère). Car c'est bien là que le problème se pose (cf mon premier message).
Donc, c'est une conversion des données le temps d'un chargement qui m'intéresse. Je ne souhaite pas convertir la base entière.
 
Je suis en train de tester la fonction convert... Je ne sais pas si je vais trouver mon bonheur de ce côté.
Je continue mes recherches.
 
Si vous avez encore des idées ou des solutions, je surveille :ange:  
 
Merci merci !

n°1732355
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 15-05-2008 à 17:49:15  profilanswer
 

non mais l'encodage du fichier plat, c'est quoi ? de l'UTF-8 ? 16 ?

n°1732359
josserand_​joss
Posté le 15-05-2008 à 18:07:52  profilanswer
 

Euh... Comment on fait pour voir l'encodage d'un fichier plat ? :lol:

n°1732361
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 15-05-2008 à 18:14:01  profilanswer
 

regarde le fichier dans un éditeur héxa, et regarde les 1ers octets :
 
- FF FE = UTF-16 Low Endian
- FE FF = UTF-16 Big Endian
- EF BB BF = UTF-8

n°1732583
josserand_​joss
Posté le 16-05-2008 à 10:22:56  profilanswer
 

Euh... Le début de mon fichier en Héxa est bien différent. D'ailleurs, il correspond au contenu du fichier, et non à quelconque méta-données.
Il me semblait d'ailleurs qu'un fichier plat n'avait rien d'autre que du contenu (pas d'informations autres)... Mais je dois me tromper.
 
Je suis sur une nouvelle (et bonne ?) piste : directement définir le type d'encodage dans le fichier CTL.
... à suivre ...

n°1732585
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 16-05-2008 à 10:25:50  profilanswer
 

josserand_joss a écrit :


Il me semblait d'ailleurs qu'un fichier plat n'avait rien d'autre que du contenu (pas d'informations autres)... Mais je dois me tromper.


c'est effectivement le cas, mais ce contenu, c'est du texte, et il faut bien que ce texte soit encodé dans un charset. les "informations autres" dont tu parles sont définies par le charset, et pas par le format de fichier

mood
Publicité
Posté le 16-05-2008 à 10:25:50  profilanswer
 

n°1732658
josserand_​joss
Posté le 16-05-2008 à 12:24:57  profilanswer
 

Ok, merci pour l'info.
 
Bon, ma piste piste s'est avérée bonne.
Dans le fichier CTL, après le LOAD DATA, j'ai rajouté la ligne CHARACTERSET WE8ISO8859P1 (qui correspond à l'encodage de la base de données cible). Et ça marche !
 
Merci à tous ! :hello:


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  SQL Loader - problème d'encodage des caractères accentués

 

Sujets relatifs
Problème javascript et css sur texte défilant[SQL Server] Est-il possible de créer des formulaires ?
Problème de droit copie d'un serveur à un autreSQL Server : Ajouter une vue issue d'une autre BDD
Probléme de téléchargement d'une archive[Sql Server 05] Générer une schéma de BD
probleme défilement image[Résolu] Problème dans le menu
[Windows]Probleme de plannification de tacheCaracteres speciaux
Plus de sujets relatifs à : SQL Loader - problème d'encodage des caractères accentués


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR