Bonjour,

Je cherche à charger un fichier plat dans une table via SQL*Loader, et certains champs qui sont des nombres me posent problème.

Quelques contraintes à ce sujet :

- Le format des nombres dans le fichier plat ne sont pas modifiables.
- Je dois utiliser SQL*Loader et aucune table temporaire.
- Le format d'arrivée des nombres est NUMBER(20,6).


Voici donc les fameux types de nombres incriminés :

Type A : 31.93866096530216 trop de décimales pour mon champ d'arrivée.

Type B : 4.469880223679272e-08 nombre farfelu avec exposant (qui arrive à la place des 0, mais je ne peux rien y faire en amont comme je l'ai dit plus haut ).


Maintenant voici ce que j'ai testé :

1- Ne rien faire : aucun des 2 types ne passe.

2- Mettre la clause TO_NUMBER(RR_MT_01 ,'9999999999999999999.99999999999999999999') : le type A passe (et est tronqué à 6 décimales à cause de la structure de la table, c'est bien ce que je souhaite), mais le type B est rejeté.


Je ne sais plus quoi faire. Il me semblait avoir eu un cas similaire d'exposants il y a quelques mois, mais ça c'était bien passé et il m'avait chargé soit 0 soit NULL.
Notez bien que j'autorise que le champ soit à NULL

Entre temps, j'ai dû réinstaller le kit de développement ORACLE (qui contient SQL*Loader) et je n'ai aucune idée des différences qu'il peut y avoir entre l'ancien et le nouveau.
Pensez-vous qu'il existe une option à configurer sur SQL*Loader pour ne pas rejeter ces exposants et les traiter comme des 0 ou des NULL ??

Et sinon, des idées pour que mes 2 types de champs soient chargés ?


J'espère avoir été clair

Merci d'avance pour votre aide