|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Futur Membre du Club
![]() Inscription : mars 2007 Messages : 36 ![]() |
Bonjour tout le monde,
excusez moi d'avance si ce problème a déjà été traité mais je n'ai pas réussi à comprendre les choses suivantes: j'utilise sqlldr pour charger un fichier plat dans une table qui possède un champ style machin_id géré par une séquence et un trigger (auto increment) et qui représente ma clé primaire. Les champs de mon fichier plat ne sont pas du même ordre que les champs de ma table, du coup je les indique dans mon fichier contrôle. J'utilise aussi l'argument TRAILING NULLCOLS car je ne remplis pas toutes les colonnes de ma table,et ce qui induit entre autres mon problème avec machin_id, car comme c'est ma clé primaire, elle ne peut donc prendre une valeur nulle et le problème, c'est que le trigger ne s'enclenche pas lors du Load Data : pourquoi est ce le cas? (ma séquence et mon trigger sont déjà créés). Donc mon chargement ne se fait pas à cause de l'erreur "de valeur nulle" et l'utilisation manuelle de la séquence de machin_id ne fonctionne pas non plus. Comment donc utiliser le trigger lors du load data? Merci d'avance pour vos réponses. Bonne journée. |
|
|
00
|
|
|
#2 |
![]() ![]() Consultant en Business Intelligence Inscription : janvier 2007 Messages : 1 192 ![]() |
Bonjour et bienvenue sur le forum !
Quelques règles quand même à respecter : il faut que tu donne la version des outils que tu utilises. Concernant ton problème, est ce que la sequence est utilisée dans le trigger ou est ce que la séquence est utiliser dans le fichier de control de sqlldr ? |
|
|
00
|
|
|
#3 |
|
Futur Membre du Club
![]() Inscription : mars 2007 Messages : 36 ![]() |
Merci pour ta réponse.Oups désolé, c'est vrai que j'ai oublié l'essentiel, en fait j'utilise Oracle 10g avec l'outil sql loader qui est livré avec.
Si j'ai bien compris la question, donc j'ai créé ma base, la table concernée avec la séquence et le trigger qui l'utilise. J'ai d'abord essayé d'utiliser le load data du fichier control en espérant que le trigger interviendrait pour chaque insert ce qui n'a pas été le cas, et ensuite j'ai essayé dans le fichier control d'incrémenter ma séquence manuellement avec nextval, et ca ne marche pas. |
|
|
00
|
|
|
#4 |
![]() ![]() Consultant en Business Intelligence Inscription : janvier 2007 Messages : 1 192 ![]() |
Les triggers / sequences et sqlldr ne font pas bon menage...
Ici tu devrais trouvé quelques infos : http://www.developpez.net/forums/sho...d.php?t=290094 ou sinon je t'invite à chercher sur le forum... ou sinon je conseille toujours d'utiliser une table temporaire lorsque le traitement du fichier plat est trop lourd (comme ici), mais cela n'engage que moi |
|
|
00
|
|
|
#5 |
|
Futur Membre du Club
![]() Inscription : mars 2007 Messages : 36 ![]() |
en fait j'avais déjà lu ce post, et celui ci aussi:
http://www.developpez.net/forums/sho...d.php?t=263951 où tu parlais des trigger lors d'un load data mais en ce qui me concerne mon trigger ne se met pas automatiquement en route, et c'est cela que je trouve bizarre, sinon oui, la solution serait une table temporaire, mais j'aurai bien voulu savoir pourquoi mon trigger ne marche pas lors d'un load data... Merci pour ton aide. |
|
|
00
|
|
|
#6 |
![]() ![]() Consultant en Business Intelligence Inscription : janvier 2007 Messages : 1 192 ![]() |
Donne nous un exemple de ton code, peux être qu'une erreur s'est caché dedans...
|
|
|
00
|
|
|
#7 | ||||||||
|
Futur Membre du Club
![]() Inscription : mars 2007 Messages : 36 ![]() |
donc voici le code pour la table, la sequence et le trigger :
Code :
Code :
Code :
C'est la première fois que je travaille sous Oracle et je n'ai aucune expérience des trigger et sequence, donc j'espère que j'ai pas codé de bêtises lol. Et voilà un des fichiers contrôles que j'avais essayé: Code :
|
||||||||
|
|
00
|
|
|
#8 |
![]() ![]() Consultant en Business Intelligence Inscription : janvier 2007 Messages : 1 192 ![]() |
Bonjour,
Je suis un peu chiante, mais a tu aussi un exemple de fichier à charger ? |
|
|
00
|
|
|
#9 | |
|
Membre éclairé
![]() Inscription : avril 2006 Messages : 465 ![]() |
Comment utilises tu sqlloader. En particulier utilises tu le direct path ?
Citation:
|
|
|
|
00
|
|
|
#10 |
|
Futur Membre du Club
![]() Inscription : mars 2007 Messages : 36 ![]() |
Bonjour
merci pour vos réponses, je reviens tout juste de vacances. Donc du coup, je ne sais plus du tout ce que j'avais commencé à faire avec SQLloader, mais pour répondre à la dernière question , le insert "normal" fait fonctionner le trigger, donc pas de souci de ce côté. Bon je vais me remettre dans le bain, si je n'y arrive vraiment pas, j'opterai pour un script bash tout simple bonne journée à tous |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com