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.93866096530216trop de décimales pour mon champ d'arrivée.
Type B : 4.469880223679272e-08nombre 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![]()
Partager