Résultat select dans fichier txt en bat

Résolu
Mickael864802 Messages postés 18 Date d'inscription lundi 22 août 2022 Statut Membre Dernière intervention 16 juillet 2024 - Modifié le 15 juil. 2024 à 17:07
mamiemando Messages postés 33435 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 18 décembre 2024 - 17 juil. 2024 à 12:58

Bonjour à 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 ?

A voir également:

1 réponse

mamiemando Messages postés 33435 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 18 décembre 2024 7 810
15 juil. 2024 à 17:07

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

0
Mickael864802 Messages postés 18 Date d'inscription lundi 22 août 2022 Statut Membre Dernière intervention 16 juillet 2024 1
16 juil. 2024 à 14:58

Bonjour Mamiemando,

Tout d'abord, merci d'avoir pris le temps de me répondre.

J'ai testé ce que tu m'as dit, voici le résultat : 

as-tu une idée de ce qui coince ?

0
mamiemando Messages postés 33435 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 18 décembre 2024 7 810 > Mickael864802 Messages postés 18 Date d'inscription lundi 22 août 2022 Statut Membre Dernière intervention 16 juillet 2024
Modifié le 17 juil. 2024 à 12:58

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

0