|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | |||||||||||
![]() ![]() |
Bonjour,
Nous devons importer des données d'un fichier CSV vers une table Oracle puis exécuter une procédure qui va utiliser cette table. Dans le fichier CSV, des montants sont formatés de cette façon : "11*800,73". Les colonnes de montants sont importés dans des colonnes VARCHAR2 dans la table. Malheureusement, dans la procédure, le montant est affecté à une variable de type NUMBER. Je dois donc ajouter une conversion de VARCHAR2 en NUMBER(12, 2) dans la procédure pour qu'elle puisse fonctionner. Je n'arrive pas a exprimer correctement le format à donner à la fonction TO_NUMBER, en travaillant sur un seul montant pour test. Code :
Citation:
Auparavant, d'après la doc d'Oracle, j'avais essayé ceci : Code :
Citation:
![]() Les montants du fichier CSV vont de l'entier simple "400" à "160 006,08". EDIT Si je fais cette requête : Code :
![]() Sachant que le montant de la no_piece est justement 6 000,00, si je fais cette requête : Code :
Citation:
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Autoentrepreneur. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise la suite Linux Mageïa ! |
|||||||||||
|
00
|
|
|
#2 | ||
![]() ![]() |
Plusieurs remarques :
__________________
Email : http://scr.im/waldar |
||
|
10
|
|
|
#3 | |||||
![]() ![]() |
Citation:
Quel doit être mon format optimal pour ces deux cas alors ? Citation:
Citation:
Je n'ai pas Oracle à la maison pour tester (et pas envie de me farcir son installation) donc ça attendra lundi. Merci pour la réponse en tout cas.
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Autoentrepreneur. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise la suite Linux Mageïa ! |
|||||
|
00
|
|
|
#4 | |||
![]() ![]() |
9G999G999G999G999D99 pour le 20 et beaucoup plus long pour le 50, à avoir si c'est utile quand même.
Citation:
En recherchant dans TO_NUMBER : Citation:
Citation:
Je ne travaille plus sur Oracle depuis un an (snif), mais je me suis créé un compte sur apex.oracle.com pour tester les petites requête, c'est pratique.
__________________
Email : http://scr.im/waldar |
|||
|
10
|
|
|
#5 | ||
![]() ![]() |
Citation:
Pas claire la doc !
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Autoentrepreneur. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise la suite Linux Mageïa ! |
||
|
00
|
|
|
#6 | |||
![]() ![]() |
Après avoir passé du temps à corriger quelques données, nous revenons à cette procédure qui nous pose problème...
Au début de la procédure il y a maintenant ceci : Code :
Citation:
Faut-il vraiment mettre un format de 20 caractères pour un varchar2(20 byte) ? C'est autre chose que j'ai mal interprété ? Pour mémoire, les montants dans les deux colonnes sont formatés de la sorte : 999 999,99
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Autoentrepreneur. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise la suite Linux Mageïa ! |
|||
|
00
|
|
|
#7 | ||
![]() ![]() |
Il faut vérifier les données les plus longues pour s'assurer que le format est suffisant :
Code :
__________________
Email : http://scr.im/waldar |
||
|
00
|
|
|
#8 | ||||||
![]() ![]() |
A priori oui puisque le montant maxi de la première colonne est 600 000,00.
Et dans la seconde les montants sont encore plus petits. Je viens de tester avec le premier montant de la première colonne : Code :
![]() Code :
Chose intéressante... Je copie le montant 6 000,00 dans SQL Developper et je le colle dans mon éditeur KWrite à la première requête : Code :
En regardant bien dans mon éditeur, au lieu d'un espace, j'ai une sorte de caractère de soulignement en gris clair ! Y a t-il une fonction Oracle pour convertir une chaîne de caractères en code hexadécimal ou en code ASCII ? EDIT : Je pense que j'ai trouvé : => Typ=96 Len=8: 36,a0,30,30,30,2c,30,30 Pour un espace, il devrait y avoir 20. Pas banal ! EDIT 2 : J'ai collé cet espace bizarre dans la requête et j'ai eu les bon nombres. Ensuite, je l'ai collé dans les fonctions TO_NUMBER de ma procédure et elle a pu s'exécuter. ![]() Tordu ces importation de données d'un autre logiciel !
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Autoentrepreneur. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise la suite Linux Mageïa ! |
||||||
|
00
|
|
|
#9 |
![]() ![]() |
Peut-être l'espace insécable (alt+0160) ?
L'astérisque dans le premier sujet m'y avait fait pensé mais j'ai oublié par la suite - avec Chrome et sur ce forum, je vois des * au lieu des espaces insécables :
__________________
Email : http://scr.im/waldar |
|
00
|
|
|
#10 |
![]() ![]() |
Probablement l'espace insécable en effet. Je ne sais pas à quelle étape de l'importation c'est apparu.
En gros on part d'une exportation en format Excel à partir d'un ancien logiciel de comptabilité et comme à la DSI nous sommes 2 linuxiens, il a été ouvert et trituré en format ods avec Libre Office puis enregistré en csv pour importation dans Oracle. Et les espaces insécables figurent bien dans le fichier csv en tout cas ! Voilà le genre de truc bien chronophage auquel peut être confronté un informaticien !
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Autoentrepreneur. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise la suite Linux Mageïa ! |
|
00
|
Copyright © 2000-2013 - www.developpez.com