Précédent   Forum des professionnels en informatique > Bases de données > Oracle > Outils > SQL*Loader
SQL*Loader Forum d'entraide sur Oracle SQL*Loader
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 14/05/2007, 12h02   #1
Nouveau Membre du Club
 
Inscription : avril 2007
Messages : 40
Détails du profil
Informations personnelles :
Âge : 28
Localisation : Maroc

Informations forums :
Inscription : avril 2007
Messages : 40
Points : 25
Points : 25
Envoyer un message via MSN à damiano84
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 :
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 :
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 :
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 :
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 :
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
damiano84 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/05/2007, 13h21   #2
Nouveau Membre du Club
 
Inscription : avril 2007
Messages : 40
Détails du profil
Informations personnelles :
Âge : 28
Localisation : Maroc

Informations forums :
Inscription : avril 2007
Messages : 40
Points : 25
Points : 25
Envoyer un message via MSN à damiano84
j'ai modifié mon trigger :
Code :
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
damiano84 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/05/2007, 13h36   #3
Nouveau Membre du Club
 
Inscription : avril 2007
Messages : 40
Détails du profil
Informations personnelles :
Âge : 28
Localisation : Maroc

Informations forums :
Inscription : avril 2007
Messages : 40
Points : 25
Points : 25
Envoyer un message via MSN à damiano84
est ce que le pb vient de ce que sqlloader désactive les triggers en mode direct (direct=y) ?
et merci d'avance
damiano84 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/05/2007, 13h46   #4
Nouveau Membre du Club
 
Inscription : avril 2007
Messages : 40
Détails du profil
Informations personnelles :
Âge : 28
Localisation : Maroc

Informations forums :
Inscription : avril 2007
Messages : 40
Points : 25
Points : 25
Envoyer un message via MSN à damiano84
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
damiano84 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/05/2007, 13h47   #5
Expert Confirmé
 
Inscription : février 2006
Messages : 3 433
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 3 433
Points : 3 462
Points : 3 462
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.
__________________
P. Forstmann

AskTom Forums OTN doc 8, 9, 10 et 11
pifor est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 06h40.


 
 
 
 
Partenaires

Hébergement Web