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 :

sqlloader + sequence d'auto-incrémentation


Sujet :

SQL*Loader Oracle

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    53
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2007
    Messages : 53
    Par défaut sqlloader + sequence d'auto-incrémentation
    salut tt le monde je travaille avec oracle 10g sous windows XP
    je voudrais utiliser sql loader pour charger des données d'un fichier plat (.csv) directement dans ma base de données mais avec une colonne id qui s'auto-incrémente à chaque insertion
    voici ma table:
    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
     
    CREATE TYPE Tlobo AS OBJECT
    (
    id INTEGER,
    name VARCHAR2(30)
    )
    /
     
     
     
     
    CREATE TABLE lobo OF Tlobo
    (PRIMARY KEY(id)
    )
    ;
    j'ai créé une séquence géré par un trigger :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    CREATE sequence SEQ_LOBO start with 1 increment by 1;
     
     
    create trigger trig
    before insert on lobo  for each row WHEN (new.id IS NULL)
    begin
    select SEQ_LOBO.nextval into : new.id from dual;
    end;
    /
    mon fichier de controle est:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    LOAD DATA INFILE 'C:\Mes_tests\lobo.csv'
    APPEND
    INTO TABLE lobo
    FIELDS TERMINATED BY ';'
    trailing nullcols
    (   
    name      
    )
    je lance sqlloader a partir d'un fichier batch:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    cd C:\Documents And Settings\mohamed_elaoumari
    sqlldr userid=SYSTEM/wana control=C:\Mes_tests\controlecsv_lobo.ctl log=C:\Mes_tests\logs\journal_lobo.log bad=C:\Mes_tests\bads\bad_lobo.xls discard=C:\Mes_tests\bads\disard_lobo.xls direct=y errors=0
    exit
    mais à la création du trigger il me signale que le trigger est crée avec des erreurs de compilation
    et le fichier log de sqlloader :
    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
     
     
    SQL*Loader: Release 10.1.0.2.0 - Production on Lun. Mai 14 09:51:01 2007
     
    Copyright (c) 1982, 2004, Oracle.  All rights reserved.
     
    Fichier de contrôle :   C:\Mes_tests\controlecsv_lobo.ctl
    Fichier de données :      C:\Mes_tests\lobo.csv
      Fichier BAD :     C:\Mes_tests\bads\bad_lobo.xls
      Fichier DISCARD : C:\Mes_tests\bads\disard_lobo.xls
     (Allouer tous les rebuts)
     
    Nombre à charger : ALL
    Nombre à sauter: 0
    Erreurs permises: 0
    Continuation :    aucune spécification
    Chemin utilisé:      Direct
     
    Table LOBO, chargé à partir de chaque enregistrement physique.
    Option d'insertion en vigueur pour cette table : APPEND
    option TRAILING NULLCOLS effective
     
       Nom de colonne               Position   Long.  Séparat. Encadrem. Type de données
    ------------------------------ ---------- ----- ---- ---- ---------------------
    NAME                                FIRST     *   ;       CHARACTER            
     
     
    Informations sur Contrainte d'Intégrité/Déclencheur référentiel:
    Les contraintes NULL, UNIQUE et PRIMARY KEY ne sont pas affectées.
     
    Le déclencheur SYSTEM."TRIG" a été désactivé avant le chargement.
    SQL*Loader-951: Erreur d'appel/initialisation de charge
    ORA-26010: La colonne ÌIŽi˜ÆÿÌça=Ò „iظƒiÌIŽi˜ÆÿÌça
    est ce que qlq'1 a une idée sur ce qui cloche et merci d'avance

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    53
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2007
    Messages : 53
    Par défaut
    j'ai modifié mon trigger :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    create OR REPLACE trigger trig
    before insert on lobo REFERENCING NEW AS NEW for each row WHEN (new.id IS NULL)
    begin
    select SEQ_LOBO.nextval into :new.id from dual;
    end;
    /
    et la crétion du trigger passe sans erreurs mais paro contre avec sqlloader ca m'affiche encore le meme fichier log auparavant et l'inseryion ne passe pas

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    53
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2007
    Messages : 53
    Par défaut
    est ce que le pb vient de ce que sqlloader désactive les triggers en mode direct (direct=y) ?
    et merci d'avance

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    53
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2007
    Messages : 53
    Par défaut
    oui effectivement le pb était la le mode direct désactive les triggers donc faut remplacer ds mon fichier batch et faire direct=false
    et ca passe
    j'espère que ca aidera qlq'1 a l'avenir
    des fautes des autres on apprend

  5. #5
    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
    Avez-vous vérifié le code d'erreur ORA-26010 ?

    Cela pourrait aussi venir du fait que le chargement d'une table "objet" peut-être différent d'une table "classique" d'après le Utilities Guide.

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

Discussions similaires

  1. Pb d'auto incrémentation sous interbase !!!
    Par le.clown dans le forum InterBase
    Réponses: 2
    Dernier message: 26/02/2004, 14h11
  2. prbl auto-incrémente
    Par cb dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 28/11/2003, 11h32
  3. Dernière clé auto incrémenté ?
    Par WOLO Laurent dans le forum MS SQL Server
    Réponses: 7
    Dernier message: 15/11/2003, 10h41
  4. [CODE] auto incrémentation ?
    Par Roi dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 25/09/2003, 15h09
  5. ca ne fonctionne pas (generateur auto-incrémentant)
    Par tripper.dim dans le forum SQL
    Réponses: 7
    Dernier message: 26/11/2002, 00h10

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