Hello tout le monde,

Je dois extraire assez régulièrement des données dans des fichiers csv ou excel pour qu'ensuite je puisse les analyser, faire des jolies graphiques excel ou des tableau dynamiques.
J'utilise Toad mais ce "con" m'oblige à faire dans un premier temps un affichage de la requete puis ensuite je peux enregistrer. Cela prends donc 3 plombes et cela monopolise mon toad.

Je me suis donc lancé dans l'aventure sqlplus. J'ai réussi à créer des fichiers csv. Cependant très rapidement lorsque j'avais trop de valeurs à sélectionner, trop de valeurs dans mon "in", je me suis fais jetter par un SP2-0027: Input is too long

Avec Toad, je n'ai aucunement cette erreur. Au bout d'un nombre, cependant Toad me mets cependant que j'ai une erreur avec une parentaise, une erreur bidon ...

Mes questions?
- Comment résoudre le SP2-0027?
Est ce qu'il rale parce que la requete elle même est trop longue? La requete entre ma commande spool <Fichier> et spool off?
Ou est ce qu'il rale parce que c'est tout l'ensemble? L'entête me permettant de bien formater + la requete SQL?

- Est ce qu'il y a d'autres limites auquels vous voyez?

Pour ma faciliter la tache dans mes extractions, j'envisage de me créer des macros VBA sur des fichiers Excel qui me généreront des fichiers .sql de manière bien organiser dans le bon dossier. Je n'aurais plus qu'à le lancer en ligne de commande : sqlplus login/pass@service_tns @script_genere_par_vba


Pour cette erreur de SP2-0027, ma macro découpera automatiquement en plusieurs requêtes SQL dans plusieurs fichiers .SQL

Exemple :
Je ne filtre plus que sur 2 valeurs au lieu de profiter du filtre jusqu'à 1000 valeurs dans le IN. La requete est plus courte et ne générera plus l'erreur. Les fichiers seront lancés les uns après les autres. Avec la fonction spool, on a la possibilité d'ajouter des données donc il n'y aura pas de souci.
fichier_generé1.sql :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
 
set formatage blabla
set head off
spool rep\fichier_sortie.csv add
select champs1, champs2, .....from table1, ... where ... in (valeur1, valeur2)
spool off
exit
fichier_generé2.sql
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
 
set formatage blabla
set head off
spool rep\fichier_sortie.csv add
select champs1, champs2, .....from table1, ... where ... in (valeur3, valeur4)
spool off
exit
fichier_generé3.sql
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
 
set formatage blabla
set head off
spool rep\fichier_sortie.csv add
select champs1, champs2, .....from table1, ... where ... in (valeur5, valeur6)
spool off
exit
Qu'est ce que vous en pensez?