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

SQL*Loader Oracle Discussion :

SQL LOADER : value too large ...


Sujet :

SQL*Loader Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de magic charly
    Inscrit en
    Février 2006
    Messages
    167
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 167
    Par défaut SQL LOADER : value too large ...
    Bonjour,

    je souhaiterais effectuer le chargement d'une base de données à une autre en utilisant des fichiers plats. J'ai réussi à charger presk l'ensemble de mes tables avec SQLLDR mais une me résiste ...

    mon fichier plat est de la forme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    "ID_MES","DATE_MES","VALEUR","TYPE_MES","FREQ_MES"
    "51950","05/04/2006 00:15:00","1","M","Q"
    "51951","05/04/2006 00:15:00","-1","M","Q"
    "51952","05/04/2006 00:15:00","422","A","Q"
    "51953","05/04/2006 00:15:00","27","A","Q"
    dans la base de données cible :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    create table MA_TABLE(
    DATE_MES DATE not null,
    VALEUR FLOAT,
    TYPE_MES VARCHAR2(1) not null,
    FREQ_MES VARCHAR2(1) not null,
    ID_MES NUMBER not null
    )
    mon fichier de controle: control_MM.txt
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    LOAD DATA INFILE 'ma_table.csv' 
    INSERT 
    INTO TABLE MA_TABLE
    FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
    (ID_MES,DATE_MES,VALEUR,TYPE_MES,FREQ_MES)
    la commande sqllr lancée


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    sqlldr control=control_MM.txt log=log_MM.txt
    log=log_MM.txt bad=bad_MM.txt discard=discard_MM.txt direct=y errors=0 skip=1 userid=mon_login/pwd
    l'erreur que j'obtiens
    Record 13: Rejected - Error on table MA_TABLE, column TYPE_MES.
    ORA-01401: inserted value too large for column

    Config: Oracle 9.2


    je ne sais vraiment plus dans quelle direction chercher. Un coup de main serait vivement apprécié

    merci d'avance à ceux qui se pencheront sur le probleme

    Magic Charly

  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
    Par défaut
    Donnez nous tous les éléments pour analyser l'erreur:
    - la ligne 13 du fichier ma_table.csv
    - le contenu des fichiers suivants:
    log_MM.txt bad_MM.txt discard_MM.txt

  3. #3
    Membre confirmé Avatar de magic charly
    Inscrit en
    Février 2006
    Messages
    167
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 167
    Par défaut
    pas de problèmes

    ligne 13
    "53292","05/04/2006 00:15:00","1","M","Q"
    ligne 14
    "53293","05/04/2006 00:15:00","-1","M","Q"

    dans le fichier discard il n'y a rien
    dans le fichier bad file (1 seule ligne )
    "53293","05/04/2006 00:15:00","-1","M","Q"

    j'ai l'impression qu'il interprete mal le -1

    j'ai essayé de forcer le type en FLOAT dans le fichier de controle pour le champ VALEUR. ça ne change rien

    merci pour votre aide

  4. #4
    Membre confirmé Avatar de magic charly
    Inscrit en
    Février 2006
    Messages
    167
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 167
    Par défaut
    j'ai modifié mon fichier de controle comme suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    LOAD DATA INFILE 'MM.csv'  & CV
    TRUNCATE 
    INTO TABLE MA_TABLE
    FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
    (ID_MES,DATE_MES date "dd/mm/yyyy hh24:mi:ss", VALEUR FLOAT,  TYPE_MES CHAR(1), FREQ_MES
    CHAR(1))
    jobtiens le log suivant :

    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
    29
    30
    31
    32
    33
    Number to load: ALL
    Number to skip: 1
    Errors allowed: 0
    Continuation:    none specified
    Path used:      Direct
    Table MESURE_MAIN, loaded from every logical record.
    Insert option in effect for this table: TRUNCATE
       Column Name                  Position   Len  Term Encl Datatype
    ------------------------------ ---------- ----- ---- ---- ---------------------
    I_MES                             FIRST     *   ,  O(") CHARACTER
    DATE_MES                             NEXT     *   ,  O(") DATE dd/mm/yyyy hh24:mi:ss
    VALEUR                               NEXT     4           FLOAT
    TYPE_MES                             NEXT     1   ,  O(") CHARACTER
    FREQ_MES                             NEXT     1   ,  O(") CHARACTER
    Record 108: Rejected - Error on table MA_TABLE, column TYPE_MES.
    Field in data file exceeds maximum length
    Record 13: Rejected - Error on table MA_TABLE, column TYPE_MES.
    ORA-01400: cannot insert NULL into (TYPE_MES)
    MAXIMUM ERROR COUNT EXCEEDED - Above statistics reflect partial run.
    Table MESURE_MAIN:
      0 Rows successfully loaded.
      2 Rows not loaded due to data errors.
      0 Rows not loaded because all WHEN clauses were failed.
      0 Rows not loaded because all fields were null.
    Bind array size not used in direct path.
    Column array  rows :    5000
    Stream buffer bytes:  256000
    Read   buffer bytes: 1048576
    Total logical records skipped:          1
    Total logical records rejected:         2
    Total logical records discarded:        0
    Total stream buffers loaded by SQL*Loader main thread:        0
    Total stream buffers loaded by SQL*Loader load thread:        0
    peut etre cela donnera t il des infos supplémentaires?

    13 "53292","05/04/2006 00:15:00","1","M","Q"
    14 "53293","05/04/2006 00:15:00","-1","M","Q"

    103 "51489","05/04/2006 00:15:00","1","M","Q"
    104 "51558","05/04/2006 00:15:00","1","M","Q"

    merci

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 71
    Par défaut
    Encore une qualite d'Oracle : les codes d'erreurs retournés.

    Essaie voir de taper ORA-01401 dans google, il y a de fortes chances que tu y trouves ta solution.

  6. #6
    Membre confirmé Avatar de magic charly
    Inscrit en
    Février 2006
    Messages
    167
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 167
    Par défaut
    c'est ce que je fais mais je ne trouve pas de réponse satisfaisant à mon probleme

  7. #7
    Membre chevronné

    Profil pro
    Inscrit en
    Juin 2004
    Messages
    487
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 487
    Par défaut
    Bonjour,

    Type_mes est un varchar2(1).
    Il ne peux donc prendre -1.
    Il faux que tu le change en varchar2(2).

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

Discussions similaires

  1. ORA-01401 : inserted value too large for column
    Par Mattgic dans le forum Oracle
    Réponses: 5
    Dernier message: 25/05/2010, 10h18
  2. 'numeric or value error: number precision too large'
    Par sami117 dans le forum PL/SQL
    Réponses: 1
    Dernier message: 12/01/2009, 15h57
  3. Réponses: 2
    Dernier message: 18/03/2008, 11h13
  4. Réponses: 22
    Dernier message: 26/10/2005, 09h37
  5. Réponses: 1
    Dernier message: 22/07/2005, 13h32

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