tout le monde,
je découvre SQL Loader et je dois avouer que c'est super pratique et super performant
cependant, je suis confronté à un cas qui sera rare mais qui me pourrit bien la vie
Voilà :
avec sqlldr, je charge un fichier dans une table spécifique en mode APPEND afin d'ajouter de nouvelles données sans les supprimer.
Il peut arriver parfois que certaines données existantes doivent être mises à jour.
Alors, j'ai fait le test suivant :
charger ma table avec des données qui n'existent pas -> ok
recharger ma table avec les mêmes données -> ko.
j'ai l'erreur suivante :
Alors, d'après ce que je comprends, cela veut dire qu'il ne peut pas insérer la donnée à cause de ma contrainte.. NormalORA-39776: fatal Direct Path API error loading table SCHEMA.MATABLE
ORA-26027: unique index SCHEMA.INDEXPK partition SYS_SUBP61 initially in unusable state
SQL*Loader-2026: the load was aborted because SQL Loader cannot continue.
Moi, ce que je souhaiterais faire c'est :
- soit que la donnée se mette à jour au moment du loader
- soit qu'il me génère un fichier bad que je puisse traiter après
Hors, actuellement, il me crache l'erreur et il s'arrête sans me générer le fichier bad.
J'aimerais savoir si que je veux faire est possible ?
Merci de votre aide
PS : voici mon script qui lance le loader :
et mon fichier de control :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6rm bad.txt rm log.txt rm discard.txt rm sqlldr.txt sqlldr login/pwd control=control.txt log=log.txt bad=bad.txt discard=discard.txt direct=y errors=2000000000> sqlldr.txt
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 LOAD DATA INFILE 'fic.dat' APPEND INTO TABLE MATABLE TRAILING NULLCOLS ( ID POSITION (1:10), QUANTITE POSITION (11:19) CHAR(9), CODE POSITION (20:40) CHAR "SUBSTR(:CODE ,1,3) || SUBSTR(:CODE ,4,1) || SUBSTR(:CODE ,5,10) || SUBSTR(:CODE ,21,1)" )
Partager