Résultat select dans fichier txt en bat
RésoluBonjour à tous,
J'ai besoin de stocker le résultat d'une requête select dans un fichier txt via un .bat
Pour cela, j'ai trouvé ceci :
SELECT divers INTO OUTFILE 'Monchemin\resultat.txt' [FIELDS TERMINATED BY ','] [OPTIONALLY ENCLOSED BY '"'] [LINES TERMINATED BY '\n'] FROM parametre WHERE [Condition];
Lorsque j'exécute cette requête directement et manuellement en cmd (sqlplus), une erreur m'indique que le from est mal placé. Si je le place avant ou après le INTO OUTFILE la commande sql ne se termine pas correctement.
Est-ce possible de faire cela ainsi ou auriez vous une autre manière de faire ?
1 réponse
-
Bonjour,
Si tu as gardé le texte entre crochet, c'est la cause de ton erreur. Dans la plupart des documentations, du texte entre crochet signifie qu'il est optionnel et/ou à adapter en fonction de tes besoins. Par ailleurs, il faut probablement échapper ton \, car en programmation, \ sert à échapper des caractères spéciaux... et donc \ s'écrit souvent \\.
Une requête possible serait donc :
SELECT divers INTO OUTFILE 'Monchemin\\resultat.txt' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\n' FROM parametre;
Bonne chance
-
Bonjour Mickael,
En fait, j'ai raisonné comme si c'était du MySQL (où SELECT INTO OUTFILE existe bien), mais SQLplus utilise une autre syntaxe. D'après cette discussion, il faut utiliser SPOOL à la place. On peut éventuellement préciser comment formater le résultat (voir ).
spool 'D:\\d_sante\\Livraison\\resultat.txt' -- Voir https://stackoverflow.com/a/654723/14851404 set colsep , -- separate columns with a comma set pagesize 0 -- No header rows set trimspool on -- remove trailing blanks set headsep off -- this may or may not be useful...depends on your headings. set linesize X -- X should be the sum of the column widths set numw X -- X should be the length you want for numbers (avoid scientific notation on IDs) SELECT divers FROM parametre WHERE rubrique='WSUPD' AND reference='PATH' spool off
Bonne chance
-
