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 Oracle Discussion :

Erreur dans SQL*Loader


Sujet :

SQL Oracle

  1. #1
    AkA
    AkA est déconnecté
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Octobre 2005
    Messages : 16
    Points : 10
    Points
    10
    Par défaut Erreur dans SQL*Loader
    Bonjour à tous,

    Après de longue recherche sur le net et ce forum, je me résoud à poster ici.

    Je souhaite importer un fichier txt dans la table DEMO_CUSTOMER qui contient déjà des données. Voici le SQL de cette 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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
     
    CREATE TABLE  "DEMO_CUSTOMERS" 
       (	"CUSTOMER_ID" NUMBER NOT NULL ENABLE, 
    	"CUST_FIRST_NAME" VARCHAR2(20) NOT NULL ENABLE, 
    	"CUST_LAST_NAME" VARCHAR2(20) NOT NULL ENABLE, 
    	"CUST_STREET_ADDRESS1" VARCHAR2(60), 
    	"CUST_STREET_ADDRESS2" VARCHAR2(60), 
    	"CUST_CITY" VARCHAR2(30), 
    	"CUST_STATE" VARCHAR2(2), 
    	"CUST_POSTAL_CODE" VARCHAR2(10), 
    	"PHONE_NUMBER1" VARCHAR2(25), 
    	"PHONE_NUMBER2" VARCHAR2(25), 
    	"CREDIT_LIMIT" NUMBER(9,2), 
    	"CUST_EMAIL" VARCHAR2(30), 
    	 CONSTRAINT "DEMO_CUST_CREDIT_LIMIT_MAX" CHECK (credit_limit <= 5000) DISABLE, 
    	 CONSTRAINT "DEMO_CUSTOMERS_PK" PRIMARY KEY ("CUSTOMER_ID") ENABLE
       )
    /
     
     
    CREATE INDEX  "DEMO_CUST_NAME_IX" ON  "DEMO_CUSTOMERS" ("CUST_LAST_NAME", "CUST_FIRST_NAME")
    /
     
     
    CREATE OR REPLACE TRIGGER  "INSERT_DEMO_CUST" 
    BEFORE INSERT ON demo_customers
    FOR EACH ROW
    DECLARE
      cust_id number;
    BEGIN
      SELECT demo_cust_seq.nextval
        INTO cust_id
        FROM dual;
      :new.CUSTOMER_ID := cust_id;
    END;
    /
    ALTER TRIGGER  "INSERT_DEMO_CUST" DISABLE
    J'essaye ensuite d'importer mon fichier à l'aide du fichier de controle qui suit:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    LOAD DATA
    INFILE 'c:\IF\NAW\IN\naw_o2ap.cur'
    APPEND
    INTO TABLE DEMO_CUSTOMERS
    TRAILING NULLCOLS
    (
       CUSTOMER_ID           "demo_cust_seq.nextval",
       CUST_FIRST_NAME       POSITION(1:10),
       CUST_LAST_NAME        POSITION(11:20),
       CUST_STREET_ADDRESS1  POSITION(21:25),
       CUST_STREET_ADDRESS2  POSITION(26:30),
       CUST_EMAIL            POSITION(31:40)
     )
    Et en résultat, j'obtiens ce message d'erreur:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
       Nom de colonne               Position   Long.  Séparat. Encadrem. Type de données
    ------------------------------ ---------- ----- ---- ---- ---------------------
    CUSTOMER_ID                         FIRST     1           CHARACTER            
        chaîne SQL pour la colonne : "demo_cust_seq.nextval"
    CUST_FIRST_NAME                      1:10    10           CHARACTER            
    CUST_LAST_NAME                      11:20    10           CHARACTER            
    CUST_STREET_ADDRESS1                21:25     5           CHARACTER            
    CUST_STREET_ADDRESS2                26:30     5           CHARACTER            
    CUST_EMAIL                          31:40    10           CHARACTER            
     
    Enregistrement 1 : Rejeté - Erreur sur table DEMO_CUSTOMERS.
    ORA-00604: une erreur s'est produite au niveau SQL récursif 1
    ORA-01400: impossible d'insérer NULL dans ("HR"."DEMO_CUSTOMERS"."CUSTOMER_ID")
    Je ne comprends pas pourquoi le n° de séquence reste null? Si qqn à une idée!

    Merci d'avance!

    AkA

  2. #2
    Membre expert
    Avatar de LeoAnderson
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 938
    Points : 3 199
    Points
    3 199
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ALTER TRIGGER  "INSERT_DEMO_CUST" DISABLE
    le n° ne bouge pas car le trigger chargé de l'alimenter est désactivé !!!

  3. #3
    AkA
    AkA est déconnecté
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Octobre 2005
    Messages : 16
    Points : 10
    Points
    10
    Par défaut
    Merci de ta réponse LeoAnderson

    Je viens d'activer le trigger, malheuresement cela ne change pas grand chose.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    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 HR."INSERT_DEMO_CUST" a été désactivé avant le chargement.
    Enregistrement 1 : Rejeté - Erreur sur table DEMO_CUSTOMERS.
    ORA-00604: une erreur s'est produite au niveau SQL récursif 1
    ORA-01400: impossible d'insérer NULL dans ("HR"."DEMO_CUSTOMERS"."CUSTOMER_ID")
     
    HR."INSERT_DEMO_CUST" a été réactivé.
    Pourtant, tout me parait OK au niveau du code... Je ne comprends pas très bien

  4. #4
    Membre expert
    Avatar de LeoAnderson
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 938
    Points : 3 199
    Points
    3 199
    Par défaut
    Ok...
    maintenant, c'ets le fichier de paramétrage qui n'est pas bon :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    TRAILING NULLCOLS
    (
       CUSTOMER_ID           "demo_cust_seq.nextval",
       CUST_FIRST_NAME       POSITION(1:10),
    soit, votre fichier en entrée à la colonne CUSTOMER_ID et dans ce cas vous n'avez rien de particulier à faire, soit il n'y a pas la colonne ID et il faut supprimer cette ligne du fichier de paramétrage

  5. #5
    AkA
    AkA est déconnecté
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Octobre 2005
    Messages : 16
    Points : 10
    Points
    10
    Par défaut
    Dit comme ca, c'est vraiment évident!

    Je te remercie pour ces précieuses infos!

  6. #6
    AkA
    AkA est déconnecté
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Octobre 2005
    Messages : 16
    Points : 10
    Points
    10
    Par défaut ORA-01502 lors d'un insert SQL Loader
    Bonjour à tous,

    Je sais pas comment j'ai réussi à faire ca, mais en utilisant SQL*Loader, j'ai réussi à insérer un doublon dans un champ avec index PK unique.
    Du coup, impossible de faire quoi que ce soit:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ORA-01502: l'index 'HR.index' ou sa partition est inutilisable
    Si j'essaye de faire un rebuild, il ne veut pas (normal). Mais je n'arrive pas non plus à désactiver l'index pour supprimer les données.

    Suis un peu nouveau en Oracle, donc désolé si c'est bateau pour vous; mais c'est pas faute d'avoir cherché!

    AkA

  7. #7
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 073
    Points
    19 073
    Par défaut
    Merci de rester sur ce sujet

Discussions similaires

  1. message d'erreur avec sql loader
    Par minooo dans le forum SQL*Loader
    Réponses: 14
    Dernier message: 18/01/2008, 17h19
  2. erreur 63782 sql loader
    Par beurtom dans le forum SQL*Loader
    Réponses: 8
    Dernier message: 19/03/2007, 16h36
  3. [10g]ORA-01008 dans SQL*Loader
    Par isa06 dans le forum SQL
    Réponses: 3
    Dernier message: 11/05/2006, 17h17
  4. #ERREUR dans SQL
    Par molene34 dans le forum Requêtes et SQL.
    Réponses: 15
    Dernier message: 22/01/2006, 18h43
  5. catch des erreurs dans SQL+
    Par lalystar dans le forum Oracle
    Réponses: 2
    Dernier message: 21/09/2004, 15h17

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