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 : erreur de chargement de données


Sujet :

SQL*Loader Oracle

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 4
    Points : 2
    Points
    2
    Par défaut SQL Loader : erreur de chargement de données
    Bonjour,
    J'essaie de charger des données dans une table et tous mes enregistrements sont rejetés avec le même message.

    Record 33: Rejected - Error on table SER_SERVICE, column ETB_ID.
    Column not found before end of logical record (use TRAILING NULLCOLS)
    Je comprend ce message mais je n'arrive pas à trouver ce qui ne va pas dans mes datas
    Voiçi mon fichier de contrôle
    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
    load data
    infile 'services_bjn.txt'
    insert into table SER_SERVICE
    fields terminated by "	"
    (SER_ID "SER_SEQ.nextval",
        SER_LIB,
        SER_CD,
        ETB_ID,
        SER_ON CONSTANT 'O'
    )
    SER_ID est une séquence et je souhaite forcer à 'O' la colonne SER_ON
    Voiçi la table SER_SERVICE
    SER_ID Number
    SER_LIB Varchar2
    SER_CD Number
    SER_ON Char
    ETB-ID Number
    Voiçi un extrait de mon fichier de données
    CARDIOLOGIE 03 00005
    HEPATOLOGIE 04 00005
    GASTRO ENTEROLD 05 00005
    MEDECINE INTERN 06 00005
    PNEUMO-PHTISIOL 07 00005
    CHIRURGIE GENER 08 00005
    J'utilise pour la première fois ce loader
    Merci pour votre aide
    Jef

  2. #2
    Membre habitué
    Inscrit en
    Juin 2003
    Messages
    107
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 107
    Points : 126
    Points
    126
    Par défaut
    1-Pour forcer la colonne SER_ON à 'O', tu peux utiliser DEFAULT lors de la création de la table ou faire ALTER table....

    Ou même faire une UPDATE de la table à la fin de chargement
    Update Table T
    Set SER_ON='O'.

    2-Tu peux aussi consulter l'article suivant:
    Sql*Loader : Comment effectuer des chargements de données sous Oracle
    http://jaouad.developpez.com/sqlldr/

  3. #3
    Membre habitué
    Inscrit en
    Juin 2003
    Messages
    107
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 107
    Points : 126
    Points
    126
    Par défaut
    Voici un exemple d'utilisation de Sql*Loader :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    LOAD DATA INFILE 'c:\2007_2.txt'
     INTO TABLE TEST2007
     TRUNCATE
     FIELDS
      TERMINATED BY ';'
    trailing nullcols
    (
    NUMERO FILLER,
    VAR1  CHAR "decode(:VAR1, '#EMPTY', null, :VAR1)",
    VAR2 CHAR "decode(:VAR2, '#EMPTY', null, :VAR2)",
    VAR3 CHAR "decode(:VAR3, '#EMPTY', null, :VAR3)",
    VAR4 CHAR "decode(:VAR4, '#EMPTY', null, :VAR4)",
    )

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Merci Isaid
    En fait mon problème est que le loader ne trouve pas la colonne etb_id dans mon fichier de données qui se compose poutant bien de SER_LIB SER_CD ETB_ID et je ne comprend pas pourquoi ?
    Jef

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    J'ai trouvé une première partie de mon problème. La colonne SER_ID de ma table SER_SERVICE est gérée par une séquence mais cette séquence n'est pas gérée par un trigger lors de l'insertion de données. le loader n'arrivait pas à faire correspondre les champs du fichier de controle à ceux du fichier de données.
    J'ai créé un trigger permettant à l'insertion de gérer la séquence.
    Il me reste une question à résoudre:
    Comment réinitialiser la séquence à 1 après avoir deleter les données de ma table SER_SERVICE (last value reste à la dernière valeur).
    Merci si quelqu'un possède la réponse.
    Jef

  6. #6
    Membre habitué
    Inscrit en
    Juin 2003
    Messages
    107
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 107
    Points : 126
    Points
    126
    Par défaut
    Je pense la seule façon d’initialiser la valeur de last_value à 1, c'est de dropper la séquence et la recréer à nouveau.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    CREATE SEQUENCE ma_sequence START WITH 1 INCREMENT BY 1 .....;

  7. #7
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Merci Isaid pour ton aide,
    Sans dropper la sequence il est possible de récupérer le currval et d'utiliser l'option cycle
    select sequence ma_sequence.currval;
    alter sequence ma_sequence maxvalue currval cycle;
    delete des données d la table
    rechargement par sql loader
    alter sequence ma_sequence maxvalue xxxxxxx nocycle;
    Jef

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

Discussions similaires

  1. Réponses: 7
    Dernier message: 31/03/2008, 14h31
  2. SQL LOADER : erreur de données
    Par madina dans le forum SQL*Loader
    Réponses: 10
    Dernier message: 13/06/2006, 18h34
  3. SQL LOADER: Erreur
    Par claralavraie dans le forum SQL*Loader
    Réponses: 19
    Dernier message: 11/01/2006, 10h26
  4. [Sql*Loader] Erreur ORA-00054
    Par Spyco dans le forum Oracle
    Réponses: 4
    Dernier message: 23/12/2005, 16h43
  5. [SQL*Loader] Problème de chargement de nombres
    Par sebduth dans le forum Oracle
    Réponses: 10
    Dernier message: 18/11/2005, 10h07

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