Re: psql : extension des commandes ...

From: Pierre BOIZOT <pierre(dot)boizot(at)gmail(dot)com>
To: Guillaume Lelarge <guillaume(at)lelarge(dot)info>
Cc: PG-Mail-liste <pgsql-fr-generale(at)postgresql(dot)org>
Subject: Re: psql : extension des commandes ...
Date: 2013-10-05 04:30:10
Message-ID: CANxSh5xohsmLy=vA1LSFoua1gDMAutd9rw7EPHmCS_Q_qj-9rQ@mail.gmail.com
Views: Whole Thread | Raw Message | Download mbox | Resend email
Thread:
Lists: pgsql-fr-generale

Hello,

Je ne suis pas forcément trés clair :-(

effectivement cela marche :-)

postgres-# \set lsql '\\! IFS=: ; for d in \$PGSQLPATH; do find \$d
-name \"*.sql\" ; done'
postgres-# :lsql
/u00/app/pg/local/dmkpg/sql/AnaBgWriterStat.sql
/u00/app/pg/local/dmkpg/sql/SizePubTab.sql
/u00/app/pg/local/dmkpg/sql/GlobalHitBufCache.sql
/u00/app/pg/local/dmkpg/sql/TabWithoutPK.sql
/u00/app/pg/local/dmkpg/sql/HitBufCacheByTab.sql
/u00/app/pg/local/dmkpg/sql/IndxUseByTab.sql
/u00/app/pg/admin/dbi/sql/hitratio.sql

comme tu le vois ci dessus la variable :lsql me permet d'avoir une
liste de fichiers ayant l'extension sql.

c'est la première étape ...
l'équivalent d'un help sur les procédures sql contenu dans les
répertoires où pour une base données se trouvent les fichiers .sql

comment obtient on on la liste ? simplement par la commande suivante.

\! IFS=: ; for d in $PGSQLPATH; do find $d -name "*.sql" ; done

si PGSQLPATH contient une liste de chemin comme ci-dessous
/u00/app/pg/local/dmkpg/sql:/u00/app/pg/admin/dbi/sql

la commande renvoie la liste ci-dessus.

L'objectif final est de faire 2 fonctions .

une pour rechercher des fichiers contenant une chaine donnée 'Stat'
l'autre pour executer le fichier passé en paramêtre.

exemple :

:lsql Stat
/u00/app/pg/local/dmkpg/sql/AnaBgWriterStat.sql

:exec AnaBgWriterStat.sql

exécutant le sql comme \i AnaBgWriterStat.sql l'éxécute mais aprés
l'avoir recherché dans les répertoires contenus dans une variable
d'environnement par exemple PGSQLPATH.

cela pourrait être vu comme une extension de la commande \i ....

Pierre.

Le 4 octobre 2013 23:34, Guillaume Lelarge <guillaume(at)lelarge(dot)info> a écrit :
>
> On Fri, 2013-10-04 at 19:11 +0200, Pierre BOIZOT wrote:
> > Guillaume,
> >
> > Merci pour les réponses, l'utilisation de variable ne marche pas. :-(
> >
> > la commande :
> > postgres=# \i list-sql.bash
> > /u00/app/pg/admin/dbi/sql/hitratio.sql
> > /u00/app/pg/local/dmkpg/sql/AnaBgWriterStat.sql
> > /u00/app/pg/local/dmkpg/sql/SizePubTab.sql
> > /u00/app/pg/local/dmkpg/sql/GlobalHitBufCache.sql
> > /u00/app/pg/local/dmkpg/sql/TabWithoutPK.sql
> > /u00/app/pg/local/dmkpg/sql/HitBufCacheByTab.sql
> > /u00/app/pg/local/dmkpg/sql/IndxUseByTab.sql
> >
> > ne peut pas être mise en variable....
> >
> > \set listsql '\i list-sql.bash'
> > \set: error
> >
> > Donc ce n'est pas la solution.
> >
>
> Si, mais tu as fait une erreur...
>
> $ echo "SELECT now();" > test.sql
> $ psql postgres
> psql (9.3.0)
> Type "help" for help.
>
> postgres=# \set toto '\\i test.sql'
> postgres=# :toto
> now
> -------------------------------
> 2013-10-04 23:32:21.371677+02
> (1 row)
>
> > L'idée est d'avoir une commande donnant la liste des sql se trouvant dans
> > les répertoires positionner dans une variable d'environnement...
> >
> > puis ensuite de créer une commande parmettant de lancer l'éxécution
> > \@ SizePubTab.sql
> >
> > Une sorte de PGSQLPATH ...
> >
> > Peut-être que cela existe déjà ....
> >
>
> J'avoue n'avoir rien compris. Tu peux donner un exemple ?
>
>
> --
> Guillaume
> http://blog.guillaume.lelarge.info
> http://www.dalibo.com
>

In response to

Responses

Browse pgsql-fr-generale by date

  From Date Subject
Next Message Pierre BOIZOT 2013-10-05 05:24:48 Re: Partitionement
Previous Message Guillaume Lelarge 2013-10-04 21:39:08 Re: Partitionement