Bonjour,
J'ai obtenu un export d'une base de données fait avec SQL Developer, mais malheureusement, l'export qu'a généré SQL Developer, contient des données qui devrait être de type NUMBER, mais qui malheuresement sont sous la forme : "10.3", donc à cause des guillemets, elles sont interprétées comme des string, varchar par la base Oracle.
Etant-donnés l'énorme quantité de données que l'export contient, j'aimerais pouvoir avoir un script, ou une expression régulière qui détecte chaque chaîne du fichier, qui ne contienne que des chiffres, des décimaux, mais pas de texte. Et ainsi de remplacer son contenu par le chiffre, ou le décimal de la chaine, mais sans le guillemets cette fois.
Voilà la requête de création d'une table :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 CREATE TABLE "PERS"."TMP_MSG" ( "NOM" VARCHAR2(21 BYTE), "NUMERO" NUMBER(15,0), "NUMERO_IMP" NUMBER(15,0) ) SEGMENT CREATION IMMEDIATE PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) TABLESPACE "PERS_DATA" ;
Et voilà la requête d'insertion de données :
Quelqu’un pourrait-il m'aider à trouver une solution pour m'éviter les erreurs ORA-01722 invalid number à la chaine.
Code : Sélectionner tout - Visualiser dans une fenêtre à part Insert into PERS.TMP_MSG (NOM,NUMERO,NUMERO_IMP) values ('JEAN','2','-1');
Partager