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 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
Insert into PERS.TMP_MSG (NOM,NUMERO,NUMERO_IMP) values ('JEAN','2','-1');
Quelqu’un pourrait-il m'aider à trouver une solution pour m'éviter les erreurs ORA-01722 invalid number à la chaine.