Précédent   Forum des professionnels en informatique > Bases de données > Oracle > Outils > SQL*Loader
SQL*Loader Forum d'entraide sur Oracle SQL*Loader
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 13/12/2006, 17h45   #1
Invité de passage
 
Inscription : octobre 2004
Messages : 8
Détails du profil
Informations forums :
Inscription : octobre 2004
Messages : 8
Points : 0
Points : 0
Par défaut charger une date par défaut avec sql Loader

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.
top-dogg est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/12/2006, 17h52   #2
Membre Expert
 
Avatar de nuke_y
 
Inscription : mai 2004
Messages : 1 812
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 1 812
Points : 1 609
Points : 1 609
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.
nuke_y est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/12/2006, 20h34   #3
Expert Confirmé
 
Inscription : février 2006
Messages : 3 433
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 3 433
Points : 3 462
Points : 3 462
Exemple:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
SQL> CREATE TABLE t(x int, d date);
 
TABLE created.
 
SQL> ALTER TABLE t MODIFY (d DEFAULT to_date('01.01.0001','DD.MM.YYYY'));
 
TABLE altered.
 
SQL> INSERT INTO t(x) VALUES(0);
 
1 row created.
 
SQL> SELECT * FROM t;
 
         X D
---------- ---------
         0 01-JAN-01
 
SQL>
__________________
P. Forstmann

AskTom Forums OTN doc 8, 9, 10 et 11
pifor est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/12/2006, 13h07   #4
Invité de passage
 
Inscription : octobre 2004
Messages : 8
Détails du profil
Informations forums :
Inscription : octobre 2004
Messages : 8
Points : 0
Points : 0
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?
top-dogg est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/12/2006, 14h21   #5
Membre Expert
 
Avatar de nuke_y
 
Inscription : mai 2004
Messages : 1 812
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 1 812
Points : 1 609
Points : 1 609
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.
nuke_y est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/12/2006, 14h37   #6
Invité de passage
 
Inscription : octobre 2004
Messages : 8
Détails du profil
Informations forums :
Inscription : octobre 2004
Messages : 8
Points : 0
Points : 0
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
top-dogg est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/12/2006, 15h22   #7
Expert Confirmé
 
Inscription : février 2006
Messages : 3 433
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 3 433
Points : 3 462
Points : 3 462
Code :
d DATE "RRRR.MM.DD" NULLIF d= BLANKS
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;
__________________
P. Forstmann

AskTom Forums OTN doc 8, 9, 10 et 11
pifor est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/12/2006, 15h26   #8
Membre Expert
 
Avatar de nuke_y
 
Inscription : mai 2004
Messages : 1 812
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 1 812
Points : 1 609
Points : 1 609
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.
nuke_y est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/12/2006, 15h38   #9
Invité de passage
 
Inscription : octobre 2004
Messages : 8
Détails du profil
Informations forums :
Inscription : octobre 2004
Messages : 8
Points : 0
Points : 0
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...
top-dogg est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/12/2006, 09h29   #10
Expert Confirmé
 
Inscription : février 2006
Messages : 3 433
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 3 433
Points : 3 462
Points : 3 462
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.
__________________
P. Forstmann

AskTom Forums OTN doc 8, 9, 10 et 11
pifor est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/12/2006, 13h46   #11
Invité de passage
 
Inscription : octobre 2004
Messages : 8
Détails du profil
Informations forums :
Inscription : octobre 2004
Messages : 8
Points : 0
Points : 0
Par défaut bien vu!

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
top-dogg est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/12/2006, 13h58   #12
Membre Expert
 
Avatar de nuke_y
 
Inscription : mai 2004
Messages : 1 812
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 1 812
Points : 1 609
Points : 1 609
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.
nuke_y est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/12/2006, 17h41   #13
Invité de passage
 
Inscription : octobre 2004
Messages : 8
Détails du profil
Informations forums :
Inscription : octobre 2004
Messages : 8
Points : 0
Points : 0
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!
top-dogg est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/12/2006, 17h51   #14
Expert Confirmé
 
Inscription : février 2006
Messages : 3 433
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 3 433
Points : 3 462
Points : 3 462
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.
__________________
P. Forstmann

AskTom Forums OTN doc 8, 9, 10 et 11
pifor est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/12/2006, 22h37   #15
Invité de passage
 
Inscription : octobre 2004
Messages : 8
Détails du profil
Informations forums :
Inscription : octobre 2004
Messages : 8
Points : 0
Points : 0
Citation:
Envoyé par pifor
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.
Merci,
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!
top-dogg est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/12/2006, 10h59   #16
Expert Confirmé
 
Inscription : février 2006
Messages : 3 433
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 3 433
Points : 3 462
Points : 3 462
Moi j'utiliserais des outils Unix comme sed, awk pour faire cette modification directement dans les données.
__________________
P. Forstmann

AskTom Forums OTN doc 8, 9, 10 et 11
pifor est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 23h51.


 
 
 
 
Partenaires

Hébergement Web