Variable de script psql

From: philippe(dot)beaudoin(at)bull(dot)net
To: pgsql-fr-generale(at)postgresql(dot)org
Subject: Variable de script psql
Date: 2009-06-24 08:50:21
Message-ID: OF43A6B3F6.191E130F-ONC12575DF.002D381B@frcl.bull.fr
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-fr-generale

Bonjour à tous,

Comme je me casse les dents depuis quelques heures sur un petit problème
pratique, j'appelle à l'aide...
Nous avons des personnes dans des équipes de développement qui doivent
écrire des scripts SQL à exécuter par psql.
Ils doivent tester les scripts sur une base de test, avant de les envoyer
aux centres de production qui devront les exécuter sur une ou plusieurs
bases de données suivant les cas. En production, l'appel de psql est
intégré dans un script shell (linux), dont l'exécution est déclenchée par
les automates d'exploitation.

Je cherche à faire un script shell simple permettant de tester ces scripts
psql avant envoi, le but étant que ces scripts puissent ensuite être
utilisé en production sans avoir à changer un seul caractère. Il faut donc
prendre en compte les petites différences entre les environnements de test
et de production. Pour le nom des bases, le port des clusters, les
pathnames des fichiers de script sql et de log des résultats, pas de
problème puisque ce sont soit des variables externes (à positionner par
EXPORT), soit des paramètres de la commande psql. Mais je butte sur le nom
de fichiers de sortie pour des commandes \copy.

Il faudrait que je puisse rendre variable le pathname d'une commande :
\copy <table> to <pathname>
J'ai essayé d'ajouter des options -v à la commande psql pour passer des
variables. Mais quand j'écris
\copy <table> to :var
la variable :var n'est pas substituée (et j'obtiens un beau fichier nommé
... :var !)
Idem si la variable est définie par un \set , alors que \echo :var affiche
bien le contenu de la variable.
Je n'ai donc pas trouvé la bonne syntaxe, si elle existe...

J'ai également exploré une piste utilisant des liens symboliques créés puis
supprimés dans le script shell, permettant d'avoir dans le sql un nom de
fichier constant. Mais ceci n'est pas satisfaisant car cela empêcherait
d'exécuter en même temps le script pour plusieurs bases du même serveur,
créant des contraintes de planification génantes.

Merci par avance pour toute aide sur ce sujet.
Cordialement. Philippe.

Responses

Browse pgsql-fr-generale by date

  From Date Subject
Next Message François Figarola 2009-06-24 10:15:08 Re: Variable de script psql
Previous Message Guillaume Lelarge 2009-06-23 09:07:31 Appel à conférences pour le pgDay 2009 à Paris