|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | |||
|
Invité de passage
![]() Inscription : juin 2007 Messages : 4 ![]() |
Bonjour,
J'essaie de charger des données dans une table et tous mes enregistrements sont rejetés avec le même message. Record 33: Rejected - Error on table SER_SERVICE, column ETB_ID. Column not found before end of logical record (use TRAILING NULLCOLS) Je comprend ce message mais je n'arrive pas à trouver ce qui ne va pas dans mes datas Voiçi mon fichier de contrôle Code :
Citation:
Merci pour votre aide Jef |
|||
|
|
00
|
|
|
#2 |
|
Membre habitué
![]() Inscription : juin 2003 Messages : 107 ![]() |
1-Pour forcer la colonne SER_ON à 'O', tu peux utiliser DEFAULT lors de la création de la table ou faire ALTER table....
Ou même faire une UPDATE de la table à la fin de chargement Update Table T Set SER_ON='O'. 2-Tu peux aussi consulter l'article suivant: Sql*Loader : Comment effectuer des chargements de données sous Oracle http://jaouad.developpez.com/sqlldr/ |
|
|
00
|
|
|
#3 | ||
|
Membre habitué
![]() Inscription : juin 2003 Messages : 107 ![]() |
Voici un exemple d'utilisation de Sql*Loader :
Code :
|
||
|
|
00
|
|
|
#4 |
|
Invité de passage
![]() Inscription : juin 2007 Messages : 4 ![]() |
Merci Isaid
En fait mon problème est que le loader ne trouve pas la colonne etb_id dans mon fichier de données qui se compose poutant bien de SER_LIB SER_CD ETB_ID et je ne comprend pas pourquoi ? Jef |
|
|
00
|
|
|
#5 |
|
Invité de passage
![]() Inscription : juin 2007 Messages : 4 ![]() |
J'ai trouvé une première partie de mon problème. La colonne SER_ID de ma table SER_SERVICE est gérée par une séquence mais cette séquence n'est pas gérée par un trigger lors de l'insertion de données. le loader n'arrivait pas à faire correspondre les champs du fichier de controle à ceux du fichier de données.
J'ai créé un trigger permettant à l'insertion de gérer la séquence. Il me reste une question à résoudre: Comment réinitialiser la séquence à 1 après avoir deleter les données de ma table SER_SERVICE (last value reste à la dernière valeur). Merci si quelqu'un possède la réponse. Jef |
|
|
00
|
|
|
#6 | ||
|
Membre habitué
![]() Inscription : juin 2003 Messages : 107 ![]() |
Je pense la seule façon d’initialiser la valeur de last_value à 1, c'est de dropper la séquence et la recréer à nouveau.
Code :
|
||
|
|
00
|
|
|
#7 |
|
Invité de passage
![]() Inscription : juin 2007 Messages : 4 ![]() |
Merci Isaid pour ton aide,
Sans dropper la sequence il est possible de récupérer le currval et d'utiliser l'option cycle select sequence ma_sequence.currval; alter sequence ma_sequence maxvalue currval cycle; delete des données d la table rechargement par sql loader alter sequence ma_sequence maxvalue xxxxxxx nocycle; Jef |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com