|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Nouveau Membre du Club
![]() Inscription : avril 2006 Messages : 133 ![]() |
Bonjour,
J'ai cherché dans le forum oracle et je n'ai pas trouvé de solutions, mais je pense qu'il doit y en avoir une. Je charge classiquement des données dans une table par sqlloader, l'un des champs doit être renseigné par une certaine valeur (toujours la même) qui peut se trouver dans une variable globale oracle. Dans le ctl j'essaie de faire quelque chose comme : LOAD DATA REPLACE INTO TABLE TOTO FIELDS TERMINATED BY ';' TRAILING NULLCOLS ( typenr, fill1, fill2, fill3, fill4, fill5, PERIODE "&1" ) où &1 serait la variable globale, (ou si on pouvait passer ce paramètre à sqlloader directement ce serait aussi bien !). Bon ça ne fonctionne pas ainsi, que faire pour que ça marche ? Ca se passe avec oracle 10g Cordialement. |
|
|
00
|
|
|
#2 |
|
Nouveau Membre du Club
![]() Inscription : avril 2006 Messages : 133 ![]() |
pas de solutions ?
|
|
|
00
|
|
|
#3 |
|
Nouveau Membre du Club
![]() Inscription : avril 2006 Messages : 133 ![]() |
et supposons que la valeur à renseigner se trouve dans le 1er enregistrement, peut-on la récupérer et la mettre dans les autres enr. ?
|
|
|
00
|
|
|
#4 |
|
Membre régulier
![]() Inscription : août 2004 Messages : 176 ![]() |
Si j'etais toi, je ferais une mise a jour du champs 'PERIODE' de ma table 'TOTO', apres l'avoir charger
ca peut etre une solution |
|
|
00
|
|
|
#5 | |
|
Nouveau Membre du Club
![]() Inscription : avril 2006 Messages : 133 ![]() |
Citation:
Cordialement |
|
|
|
00
|
|
|
#6 | ||
|
Membre éclairé
![]() Inscription : septembre 2003 Messages : 432 ![]() |
Regarde cet exemple
Code :
Et tente de faire appel à une fonction qui retourne ta période |
||
|
|
00
|
|
|
#7 |
|
Nouveau Membre du Club
![]() Inscription : avril 2006 Messages : 133 ![]() |
oops, ça a l'air sympa !
Dans BeginData, je mettrais la fonction qui retourne la période ? Ou plutot, dans les valeurs affectés aux champs je pourrais faire appel à une fonction qui retourne la période ? Je vais essayer, mais j'ai plusieurs fers sur le feu, je vous tiens au courant. Cordialement. |
|
|
00
|
|
|
#8 |
|
Nouveau Membre du Club
![]() Inscription : avril 2006 Messages : 133 ![]() |
Je ne pense pas que la solution préconisée fonctionne. Il faudrait pouvoir passer un paramètre fonctionnel à sqlloader : ce n'est pas possible (sqlloader ne prend que ses paramètres standards).
Donc je ne pense pas qu'il y ait une solution au problème, ou effectivement passer par l'appel d'une fonction et faire qq chose comme : { . . . PERIODE "pack_toto.fct" . . . } pack_toto.fct ferait un accès bd, ce qui est lourd (pour 1 million d'enr. 1 million d'accès bd...). Donc voila, si pas possible de passer un paramètre fonctionnel à sqlloader, son utilisation n'est pas intéressante (dans ce cas). Cordialement |
|
|
00
|
|
|
#9 |
|
Membre éclairé
![]() Inscription : septembre 2003 Messages : 432 ![]() |
Comme détermines tu la période ?
Peut elle être calculée ? exemple période = Trimestre = to_char(sysdate,'Q') |
|
|
00
|
|
|
#10 | ||
|
Nouveau Membre du Club
![]() Inscription : avril 2006 Messages : 133 ![]() |
non elle ne peut-être calculée.
En fait j'ai réussi à résoudre ce problème. En fait la période se trouve dans l'enr. d'entête (1er enr. du fichier), je la récupère dans une variable globale (et je la met également dans cet enr.) et je la met dans les enr. suivants. Ca donne dans le ctl : Code :
Ca marche ! Mais c'est dommage qu'on ne puisse passer des paramètres fonctionnels à sqlloader. Cordialement. |
||
|
|
00
|
|
|
#11 |
|
Membre éclairé
![]() Inscription : septembre 2003 Messages : 432 ![]() |
content pour toi
peux tu mettre le tag ? Merci d'avance
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com