[Oracle] problème de contraintes/Sql*Loader
Yeah
-
Yeah -
Yeah -
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
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:
- [Oracle] problème de contraintes/Sql*Loader
- Windows loader - Télécharger - Gestion de fichiers
- Logiciel sql - Télécharger - Bases de données
- Sql lister les tables ✓ - Forum Programmation
- Jointure sql ✓ - Forum MySQL
- Windows loader : Activateur de windows 7 ou Virus ? - Forum Virus
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 ;)
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 ;)