|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Inscription : octobre 2004 Messages : 8 ![]() |
Bonjour,
Voici mon problème: Je désirerai charger un table qui possède un champ date avec sql Loader. Si ce champ date est null j'aimerai insérer dans ce champ, une valeur par défaut (exemple : '01.01.0001' ou '01/01/0001' ); Avez vous des proposition à me faire parce que je sèche vraiment là dessus Merci d'avance pour vos solutions. |
|
|
00
|
|
|
#2 |
|
Membre Expert
![]() Inscription : mai 2004 Messages : 1 812 ![]() |
Pourquoi ne pas le faire directement dans l'architecture ?
__________________
Il vaut mieux monopoliser son intelligence sur des bêtises que sa bêtise sur des choses intelligentes. Mon combat pour les droits des consommateurs face aux abus des grandes marques. |
|
|
00
|
|
|
#3 | ||
|
Expert Confirmé
![]() Inscription : février 2006 Messages : 3 433 ![]() |
Exemple:
Code :
|
||
|
|
00
|
|
|
#4 |
|
Invité de passage
![]() Inscription : octobre 2004 Messages : 8 ![]() |
merci pour vos réponse.
Cependant, il y a une contrainte not null pour ce champ. Donc cela peut poser quelques problème lors du chargement de la table? est-ce vraiment la meilleure solution? |
|
|
00
|
|
|
#5 |
|
Membre Expert
![]() Inscription : mai 2004 Messages : 1 812 ![]() |
C'est complémentaire il me semble. Si tu inséres null et qu'il y a une valeur par défaut, la contrainte not null ne sera jamais violée.
__________________
Il vaut mieux monopoliser son intelligence sur des bêtises que sa bêtise sur des choses intelligentes. Mon combat pour les droits des consommateurs face aux abus des grandes marques. |
|
|
00
|
|
|
#6 |
|
Invité de passage
![]() Inscription : octobre 2004 Messages : 8 ![]() |
re-bonjour,
j'ai enlevé la contrainte not null. cependant la commande ALTER TABLE T MODIFY (d DEFAULT to_date('01/01/2001','DD/MM/YYYY')); n'insere pas la date par défaut lorsque l'on charge la table par sql loader. sql Loader: d DATE "RRRR.MM.DD" NULLIF d= BLANKS et donc il m'insère un blanks et non la valeur par défaut. pourriez vous m'éclairer? merci |
|
|
00
|
|
|
#7 |
|
Expert Confirmé
![]() Inscription : février 2006 Messages : 3 433 ![]() |
insère valeur nulle SQL si le champ d est composé de blancs.
Vous pouvez essayer après la phase de chargement avec Oracle 9i: Code :
UPDATE t SET d = DEFAULT WHERE d IS NULL; |
|
|
00
|
|
|
#8 |
|
Membre Expert
![]() Inscription : mai 2004 Messages : 1 812 ![]() |
J'ai pas bien compris pourquoi avoir viré la contrainte not null... C'était exactement ce dont tu avais besoin...
__________________
Il vaut mieux monopoliser son intelligence sur des bêtises que sa bêtise sur des choses intelligentes. Mon combat pour les droits des consommateurs face aux abus des grandes marques. |
|
|
00
|
|
|
#9 |
|
Invité de passage
![]() Inscription : octobre 2004 Messages : 8 ![]() |
non je n'en ai pas vraiment besoin.
en faite pourrai-t-on insérer la valeur par défaut dans le ctl? la méthode update me parait assez lourde si il y a bcp d'enregistrements... |
|
|
00
|
|
|
#10 |
|
Expert Confirmé
![]() Inscription : février 2006 Messages : 3 433 ![]() |
La clause DEFAULTIF ne semble pas concerner les colonnes de type DATE.
Dans votre cas, il faut sans doute passer par un trigger sur INSERT. |
|
|
00
|
|
|
#11 |
|
Invité de passage
![]() Inscription : octobre 2004 Messages : 8 ![]() |
bien vu, ce qui m'amène à une autre question...
est ce qu'on peut faire un trigger modifiant plusieurs date contenus dans différentes tables d'un schéma? merci |
|
|
00
|
|
|
#12 |
|
Membre Expert
![]() Inscription : mai 2004 Messages : 1 812 ![]() |
oui. Après il faut faire attention à l'enchaînement des modifications.
__________________
Il vaut mieux monopoliser son intelligence sur des bêtises que sa bêtise sur des choses intelligentes. Mon combat pour les droits des consommateurs face aux abus des grandes marques. |
|
|
00
|
|
|
#13 |
|
Invité de passage
![]() Inscription : octobre 2004 Messages : 8 ![]() |
merci pour vos nombreuses réponses,
pour le moment j'ai créer mon trigger mais cependant, lors du chargement avec sql loader, celui ci désactive tous les triggers. ce qui est un peu gênant dans mon cas... Vous ne trouvez pas? Y'a-t-il un moyen pour justement pouvoir executer le trigger pendant le load? merci d'avance! |
|
|
00
|
|
|
#14 |
|
Expert Confirmé
![]() Inscription : février 2006 Messages : 3 433 ![]() |
C'est probablement parce que vous faites du chargement direct (DIRECT=true) ?
Si vous voulez garder cette option et ne pas utilisez un UPDATE après le chargement, il faut sans doute mettre la valeur par défaut dans le fichier à charger. |
|
|
00
|
|
|
#15 | |
|
Invité de passage
![]() Inscription : octobre 2004 Messages : 8 ![]() |
Citation:
comment est-ce que je pourrai mettre cette valeur par défaut dans le fichier? je pensai plutot la mettre dans le .ctl, qu'en pensez vous? cependant j'ai essayé comme ceci mais ca n'a pas l'air de fonctionner. et les codes que je trouve sur internet ne fonctionne pas du tout! |
|
|
|
00
|
|
|
#16 |
|
Expert Confirmé
![]() Inscription : février 2006 Messages : 3 433 ![]() |
Moi j'utiliserais des outils Unix comme sed, awk pour faire cette modification directement dans les données.
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com