[Oracle] problème de contraintes/Sql*Loader

Fermé
Yeah - 21 mai 2004 à 12:03
 Yeah - 21 mai 2004 à 12:38
Bonjour,

Voila j'ai un petit soucis de clef primaire,
En gros je dois remplir des tables avec un fichier VSC grace à Sql*Loader.
Mais j'ai probleme pour le remplissage d'une table à cause des clef primaire:

Je dois remplir la table ABSENCES qui hérite de la clef primaire de la table PERSONNE et TYPE_D_ABS

Donc les tables PERSONNE et TYPE_D_ABS sont préalablement remplies ensuite je remplie la table ABSENCES mais la lorsque je regarde mon fichier ".log" voila ce qui apparait :

Record 2: Rejected - Error on table TYPE_D_ABS.
ORA-00001: unique constraint (HR.PK_TYPE_D_ABS) violated

La structure me ma table absences est :

create table ABSENCES (
MATRICULE CHAR(10) not null,
TYPE INTEGER not null,
"DATE" DATE,
SAL_PERDU INTEGER,
NB_J_ABSENCES NUMBER(15,2),
REMBOURS_SS INTEGER,
REMBOURS_AUC INTEGER,
CARRENCE INTEGER,
TOTAL_REMB INTEGER,
constraint FK_ABSENCES_PERS_ABS_PERSONNE foreign key (MATRICULE)
references PERSONNE (MATRICULE),
constraint FK_ABSENCES_TYPE_ABS_TYPE_D_A foreign key (TYPE)
references TYPE_D_ABS (TYPE)
)

celle de ma table TYPE_D_ABS est :

create table TYPE_D_ABS (
TYPE INTEGER not null,
LIBELLE_ABS VARCHAR2(50),
constraint PK_TYPE_D_ABS primary key (TYPE) )


Et voila mon fichier de chargement :

INTO TABLE TYPE_D_ABS
(
TYPE CONSTANT '1',
LIBELLE_ABS CONSTANT 'Maladie'
)

INTO TABLE TYPE_D_ABS
(
TYPE CONSTANT '2',
LIBELLE_ABS CONSTANT 'Maternité'
)

INTO TABLE TYPE_D_ABS
(
TYPE CONSTANT '3',
LIBELLE_ABS CONSTANT 'Accident'
)

INTO TABLE TYPE_D_ABS
(
TYPE CONSTANT '4',
LIBELLE_ABS CONSTANT 'Enfant malade'
)

INTO TABLE ABSENCES
WHEN VARR44='FIC7'
TRAILING NULLCOLS
(
VOID44_1 FILLER position(1) CHAR TERMINATED BY ";",
VARR44 FILLER CHAR TERMINATED BY ";",
TYPE CONSTANT '1',
MATRICULE CHAR TERMINATED BY ";",
NB_J_ABSENCES DECIMAL EXTERNAL TERMINATED BY ";",
REMBOURS_SS DECIMAL EXTERNAL TERMINATED BY ";",
REMBOURS_AUC DECIMAL EXTERNAL TERMINATED BY ";",
CARRENCE DECIMAL EXTERNAL TERMINATED BY ";"
)

INTO TABLE ABSENCES
WHEN VARR45='FIC7'
TRAILING NULLCOLS
(
VOID45_1 FILLER position(1) CHAR TERMINATED BY ";",
VARR45 FILLER CHAR TERMINATED BY ";",
TYPE CONSTANT '2',
MATRICULE CHAR TERMINATED BY ";",
VOID45_2 FILLER CHAR TERMINATED BY ";",
VOID45_3 FILLER CHAR TERMINATED BY ";",
VOID45_4 FILLER CHAR TERMINATED BY ";",
VOID45_5 FILLER CHAR TERMINATED BY ";",

NB_J_ABSENCES DECIMAL EXTERNAL TERMINATED BY ";",
REMBOURS_SS DECIMAL EXTERNAL TERMINATED BY ";",
REMBOURS_AUC DECIMAL EXTERNAL TERMINATED BY ";",
CARRENCE DECIMAL EXTERNAL TERMINATED BY ";"
)


J'espere que je n'ai pas été trop confus, j'ai essayé d'etre le plus exhaustif possible.
Merci
A voir également:

1 réponse

Ok dsl jeviens de trouver,

En fait j'avais pas fait attention mais en mettant INTO TABLE TYPE_D_ABS
(
TYPE CONSTANT '1',
LIBELLE_ABS CONSTANT 'Maladie'
)

INTO TABLE TYPE_D_ABS
(
TYPE CONSTANT '2',
LIBELLE_ABS CONSTANT 'Maternité'
)

INTO TABLE TYPE_D_ABS
(
TYPE CONSTANT '3',
LIBELLE_ABS CONSTANT 'Accident'
)

INTO TABLE TYPE_D_ABS
(
TYPE CONSTANT '4',
LIBELLE_ABS CONSTANT 'Enfant malade'
)

dans mon fichier de controle, je le chargais autant de fois qu'il y avait de ligne ;)
0