Re: passage parametre psql vers fichier sql

CRUMEYROLLE Pierre <[email protected]> Thu, 21 Dec 2017 10:08:33 +0100
Newsgroups gmane.comp.db.postgresql.french
Message-ID <[email protected]>
par contre si j'ai 2 requête dans mon fichier myfile.sql avec un where  
= et un like

select * from table  where :param1
select * from table  like  :param2

je suis oblige de passer 2 parametres pour faire un where 'toto' et un  
like '%toto'
sql -h host  -p port -U user database -a -v param1=\'toto\' -v  
param2=\'%toto\'  -f  myfile.sql

donc je pense que je fais passer par des variable d'environnement ${param}



CRUMEYROLLE Pierre <[email protected]> a écrit :

> bonjour
> Ok merci ça marche avec ce format vol=\'V038\'  => psql -h seacev-pp  
> -p 5452 -U postgres db_compare -a -v vol=\'V038\'  -f compare_idli.sql
> le seul truc perturbant  la requête s'affiche .... id_cv_princ=:vol  
> .... avec l'option -a on ne voit pas en fait
> la vrai valeur d’exécution .... id_cv_princ='V038'
> mais bon ça marche donc pb resolved
> merci
>
> psql -h seacev-pp -p 5452 -U postgres db_compare -a -v vol=\'V038\'   
> -f compare_idli.sql
>
>
> Cédric Villemain <[email protected]> a écrit :
>
>> Le 20 décembre 2017 à 18:40, CRUMEYROLLE Pierre <[email protected]>
>> a écrit :
>>
>>> bonjour
>>>
>>> soit un fichier sql : compare_idli.sql
>>>
>>> select   'Delta found R_DESC_PLANCHE--> ' as Delta ,
>>> ID_CV_PRINC,ID_DESC_PL FROM (SELECT * FROM schema_cnes.R_DESC_PLANCHE WHERE
>>> id_cv_princ=:vol  except SELECT * FROM schema_cssi.R_DESC_PLANCHE WHERE
>>> id_cv_princ =: vol ) as result WHERE (ID_CV_PRINC,ID_DESC_PL) IN (SELECT
>>> ID_CV_PRINC,ID_DESC_PL FROM schema_cssi.R_DESC_PLANCHE) ;
>>>
>>>
>> ce n'est pas très lisible...et il semble y avoir un espace en trop entre
>> ":" et "vol"
>>
>>
>>
>>> je veux passe en paramètre  vol=V038
>>>
>>> psql -h seacev-pp -p 5452 -U postgres db_compare -a -v vol=V038  -f
>>> compare_idli.sql
>>>
>>> je ne trouve pas le moyen de mettre de cotes
>>> le WHERE id_cv_princ=:vol se transforme en WHERE id_cv_princ='V038'
>>>
>>
>> heu ... dans l'exemple ci-dessus le comportement est correct (je n'ai pas
>> testé, je ne fais que lire ce que vous avez écrit)...quel est le problème
>> rencontré ?
>>
>> Du coup, voici un exemple complet, simple, lisible et reproductible:
>>
>> $ cat /tmp/a.sql
>> select :param;
>>
>> $ psql -f /tmp/a.sql -v param=\'tr\'\'uc\'
>> ?column?
>> ----------
>> tr'uc
>>
>>
>> --
>>
>> Cédric Villemain +33 (0)6 20 30 22 52http://2ndQuadrant.fr/
>> PostgreSQL: Support 24x7 - Développement, Expertise et Formation