IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Oracle Discussion :

[SQLLDR]ORA-01722: Nombre non valide


Sujet :

Oracle

  1. #1
    Membre éclairé
    Inscrit en
    Juillet 2003
    Messages
    625
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 625
    Points : 673
    Points
    673
    Par défaut [SQLLDR]ORA-01722: Nombre non valide
    Bonjour,

    voici mon probleme :

    j'ai un champs de type :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SOLDEV        decimal external "to_number(replace(:soldev,',','.'))",
    qui va dans un champs number(18,5)
    mais le souci c'est que j'ai ce message d'erreur.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Record 67: Rejected - Error on table CICS_SOLDES, column SOLDEV.
    ORA-01722: Nombre non valide
    Comment faire pour qu'il accepte les décimaux signés et les nulls ??

    Merci à tous !
    Le savoir est utile que s'il est partagé par tous.
    /(bb|[^b]{2})/
    !sleep() ? array((string))

  2. #2
    Membre expert

    Profil pro
    Inscrit en
    Février 2006
    Messages
    3 437
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 3 437
    Points : 3 597
    Points
    3 597
    Par défaut
    Donnez-nous aussi un exemple de donnée qui est KO.

  3. #3
    Membre éclairé
    Inscrit en
    Juillet 2003
    Messages
    625
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 625
    Points : 673
    Points
    673
    Par défaut
    En fait les lignes d'erreur se trouve là où il y a le decimal negatif...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    18/05/2003;18/05/2003;xxxx;xxxx;xxxxxxxx;01;14860;34214;000210779;01;AAE0391 ;EUR;-            4
    9,15;-            49,15;04/05/2003; ;              0,00; ;                                        ;
    OPE;
    La valeur -49 correspond au champs en erreur
    Le savoir est utile que s'il est partagé par tous.
    /(bb|[^b]{2})/
    !sleep() ? array((string))

  4. #4
    Membre régulier
    Inscrit en
    Mars 2006
    Messages
    88
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 88
    Points : 95
    Points
    95
    Par défaut
    Pour les nulls utilise la fonction nvl et pour les signes replace (si tu en as besoin). mais le mieux, c'est de nous donner des exemples qui ne fonctionnent pas.

    @+,
    NicK.

  5. #5
    Membre éclairé
    Inscrit en
    Juillet 2003
    Messages
    625
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 625
    Points : 673
    Points
    673
    Par défaut
    Script CTL :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    LOAD DATA
    INFILE '/home/cics_new/incoming/CMSSO.csv'
    TRUNCATE
    INTO TABLE cics_soldes
    fields terminated by ";"
    trailing nullcols
    (
     DATEREF       DATE "DD/MM/YYYY",
     DATEARRET     DATE "DD/MM/YYYY",
     CODEBAN       char,
     CODEGUI       char,
     RACINE        char,
     NUMERO        char,
     RIBBAN        char,
     RIBGUI        char,
     RIBRACINE     char,
     RIBDO         char,
     CODEGES       char,
     CODEDEV       char,
     SOLDEV        decimal external "to_number(replace(:soldev,',','.'))",
     CONTVALEURO   decimal external "to_number(replace(:contvaleuro,',','.'))",
     DATEDERMOUV   char,
     ROLE          char,
     SOLDERISQ     decimal external "to_number(replace(:solderisq,',','.'))",
     INDICANOM     char,
     LIBANOMA      char,
     ROLERIB       char
    )
    et dans ma table j'ai le champs

    voilà merci
    Le savoir est utile que s'il est partagé par tous.
    /(bb|[^b]{2})/
    !sleep() ? array((string))

  6. #6
    Membre éclairé
    Inscrit en
    Juillet 2003
    Messages
    625
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 625
    Points : 673
    Points
    673
    Par défaut
    Bon en fait il y avait des espaces entre le signe - et le chiffre donc j'ai fait un replace(champs,' ','') pour eliminer les espaces et ça roule

    Merci pour l'aide !
    Le savoir est utile que s'il est partagé par tous.
    /(bb|[^b]{2})/
    !sleep() ? array((string))

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. ORA-01722: Nombre non valide + sqlloader
    Par damiano84 dans le forum SQL*Loader
    Réponses: 9
    Dernier message: 20/05/2022, 20h09
  2. [Batch] ORA-01722: Nombre non valide
    Par informatica1989 dans le forum Spring
    Réponses: 2
    Dernier message: 02/05/2014, 10h50
  3. ORA-01722: Nombre non valide
    Par asouquieres dans le forum SQL
    Réponses: 3
    Dernier message: 13/07/2010, 15h12
  4. ORA-01722: Nombre non valide
    Par misa dans le forum Oracle
    Réponses: 4
    Dernier message: 18/12/2007, 15h23
  5. Réponses: 7
    Dernier message: 07/03/2006, 09h34

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo