|
Publicité ' | ||||||||||||||||||||||||
|
|
#1 |
|
Membre éprouvé
![]() Consultant en Business Intelligence Inscription : mai 2003 Messages : 910 ![]() |
Bonjour à tous,
voilà comme d'hab on me demande à moi ce que personne ne sait faire ici !!! ![]() J'ai une requête SQL à laquelle je dois passer un paramètre, puis insérer les données qui en ressortent au sein de 4 fichiers .csv. En effet, une des conditions de la clause where possède 4 valeurs (connues) possibles. Idée 1 : Faire boucler ma requête sur ces 4 valeurs et insérer les résultats dans un fichier csv ? Mais, ceci va m'obliger à exécuter 4 fois la même requête (à 1 détail prêt) ! Idée 2 : Exécuter la requête sans la condition "changeante" et exécuter une 2e requête sur le résultat de la 1ère permettant d'appliquer uniquement la fameuse condition (au sein d'une boucle afin de passer les non moins fameuses 4 valeurs) ? C'est possible ça ?! Merci d'avance de me guider dans le droit chemin !?
__________________
Quand on n'a pas d'tête, on a ...
|
|
|
00
|
|
|
#2 |
![]() ![]() Inscription : janvier 2004 Messages : 15 861 ![]() |
tu peux aussi insérer le résultat dans une table temporaire avec une colonne qui spécifie le nom du fichier destination et ensuite spooler dans les fichiers ad hoc
|
|
|
00
|
|
|
#3 | |
|
Membre éprouvé
![]() Consultant en Business Intelligence Inscription : mai 2003 Messages : 910 ![]() |
Citation:
... mais t'aurais pas un exemple ?!
__________________
Quand on n'a pas d'tête, on a ...
|
|
|
|
00
|
|
|
#4 |
![]() ![]() Inscription : janvier 2004 Messages : 15 861 ![]() |
INSERT AS SELECT et UTL_FILE ou SPOOL sont tes amis
|
|
|
00
|
|
|
#5 | ||
|
Membre éprouvé
![]() Consultant en Business Intelligence Inscription : mai 2003 Messages : 910 ![]() |
OK pour "INSERT AS SELECT" par contre je n'arrive pas à trouver d'exemples concernant un SPOOL fonctionnant au sein d'une boucle ?
Code :
Il me faut 4 fichiers de sortie. Il faudrait que je stocke les valeurs "1", "2", "3" et "6" dans une variable ("var") de type tableau (ou autre) et que je boucle jusqu'à la fin de ce tableau. Malheureusement, je n'ai pas la moindre idée de comment faire ça en SQL ?!!
__________________
Quand on n'a pas d'tête, on a ...
|
||
|
|
00
|
|
|
#6 |
![]() ![]() Inscription : janvier 2004 Messages : 15 861 ![]() |
utilise UTL_FILE
|
|
|
00
|
|
|
#7 |
|
Expert Confirmé Sénior
![]() Inscription : juillet 2003 Messages : 3 453 ![]() |
C'est quoi la différence entre les requetes pour les différentes valeurs ?
__________________
More Code : More Bugs. Less Code : Less Bugs |
|
|
00
|
|
|
#8 |
|
Membre éprouvé
![]() Consultant en Business Intelligence Inscription : mai 2003 Messages : 910 ![]() |
Pardon !
Je modifie mon post précédent en ajoutant la condition !
__________________
Quand on n'a pas d'tête, on a ...
|
|
|
00
|
|
|
#9 |
|
Membre éprouvé
![]() Consultant en Business Intelligence Inscription : mai 2003 Messages : 910 ![]() |
Ça me parait être bien compliqué !
Et puis je comprends pas pourquoi je pourrais pas utiliser "SPOOL" à moins que ce soit une histoire de performance ? Merci d'éclairer ma lanterne !
__________________
Quand on n'a pas d'tête, on a ...
|
|
|
00
|
|
|
#10 |
|
Expert Confirmé Sénior
![]() Inscription : juillet 2003 Messages : 3 453 ![]() |
Vu que de toute façon ta requete sera exécutée 4 fois :
Soit tu écris 4 fois les spools + : Codage Facile - : Maintenance x 4 Soit tu écris une .sql générique qui prend une donnée en entrée et qui crée le fichier csv, et c'est en dehors du sql que tu fais ta boucle et appelle 4 fois le .sql + : Codage générique au cas où il faudrait 5 valeurs - : 4 appels à sqlplus Soit tu utilise utl_file, ouvre 4 fichiers. Ensuite tu fais un curseur qui récupère la liste pour les 4 valeurs et en pl/sql, tu insères la ligne dans le fichier que tu veux. + : 1 seul curseur - : Plus long si beaucoup de lignes
__________________
More Code : More Bugs. Less Code : Less Bugs |
|
|
00
|
|
|
#11 |
|
Membre éprouvé
![]() Consultant en Business Intelligence Inscription : mai 2003 Messages : 910 ![]() |
Je pensais insérer dans une table temporaire le résultat de ma requête - requête qui s'exécute sur une table de plusieurs millions de lignes - et ensuite consulter cette table temporaire selon une condition à laquelle j'affecterai ma liste de valeurs (voir exemple ci-dessus).
Donc plus de performances, non ?
__________________
Quand on n'a pas d'tête, on a ...
|
|
|
00
|
|
|
#12 |
|
Expert Confirmé Sénior
![]() Inscription : juillet 2003 Messages : 3 453 ![]() |
Tout dépend du nombre de lignes ramenées par rapport au nombre de lignes lues
Tu vas lire ta table complètement, inserer x lignes que tu vas relire 4 fois..
__________________
More Code : More Bugs. Less Code : Less Bugs |
|
|
00
|
|
|
#13 |
|
Membre éprouvé
![]() Consultant en Business Intelligence Inscription : mai 2003 Messages : 910 ![]() |
J'ai une table de départ comportant environ 7 700 000 lignes et je récupèrerai au plus quelques milliers de lignes.
__________________
Quand on n'a pas d'tête, on a ...
|
|
|
00
|
|
|
#14 |
![]() ![]() Inscription : janvier 2004 Messages : 15 861 ![]() |
pas avec UTL_FILE
ghohm |
|
|
00
|
|
|
#16 | ||
![]() ![]() Inscription : janvier 2004 Messages : 15 861 ![]() |
ou plus simplement :
Code :
|
||
|
|
00
|
|
|
#17 | |
|
Membre éprouvé
![]() Consultant en Business Intelligence Inscription : mai 2003 Messages : 910 ![]() |
Lorsque j'exécute mon script via cygwin, j'ai l'erreur suivante :
Citation:
Je désespère !
__________________
Quand on n'a pas d'tête, on a ...
|
|
|
|
00
|
|
|
#18 | |
|
Membre éprouvé
![]() Consultant en Business Intelligence Inscription : mai 2003 Messages : 910 ![]() |
Après avoir relu en détail la page sur UTL_FILE, je crois que je bosse depuis 2 jours pour rien !
![]() Je dois passer en paramètre le chemin du répertoire dans lequel seront stockés les fichiers de sortie or ce chemin peut pointer vers n'importe où ! J'ai cru comprendre qu'il fallait absolument que ce répertoire soit sur le serveur où est hébergée la BDD et qu'en plus on ait les bons droits !!! Citation:
__________________
Quand on n'a pas d'tête, on a ...
|
|
|
|
00
|
|
|
#19 |
![]() ![]() Inscription : janvier 2004 Messages : 15 861 ![]() |
je ne me souviens pas de la version de ta base
|
|
|
00
|
|
|
#20 |
|
Membre éprouvé
![]() Consultant en Business Intelligence Inscription : mai 2003 Messages : 910 ![]() |
C'est normal ... je te l'avais pas dit !
C'est la 10g.
__________________
Quand on n'a pas d'tête, on a ...
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com