web-dev-qa-db-fra.com

Comment voir le code CREATE VIEW pour une vue dans PostgreSQL?

Existe-t-il un moyen simple de voir le code utilisé pour créer une vue à l'aide du client en ligne de commande PostgreSQL?

Quelque chose comme le SHOW CREATE VIEW de MySQL.

145
Elias Dorneles

J'ai dû retourner ici pour regarder pg_get_viewdef (comment s'en souvenir !!), alors j'ai cherché une commande plus mémorable ... et je l'ai eu:

\d+ viewname

Vous pouvez voir des types de commandes similaires en tapant \? sur la ligne de commande pgsql.

Conseil bonus: la commande emacs sql-postgres rend pgsql beaucoup plus agréable (édition, copie, collage, historique des commandes).

195
EoghanM
select pg_get_viewdef('viewname', true)

Une liste de toutes ces fonctions est disponible dans le manuel:

http://www.postgresql.org/docs/current/static/functions-info.html

96
select definition from pg_views where viewname = 'my_view'
41
Clodoaldo Neto

Si vous voulez une version ANSI SQL-92:

select view_definition from information_schema.views where table_name = 'view_name';
13
Steve Judd

GoodNews à partir de la v.9.6 et des versions supérieures, l'édition des vues est désormais native de psql. Il suffit d'appeler la commande \ev. Les définitions de vue s'afficheront dans votre éditeur configuré.

julian@assange=# \ev {your_view_names}

Prime. Une commande utile pour interagir avec le tampon de requête.

Query Buffer
  \e [FILE] [LINE]       edit the query buffer (or file) with external editor
  \ef [FUNCNAME [LINE]]  edit function definition with external editor
  \ev [VIEWNAME [LINE]]  edit view definition with external editor
  \p                     show the contents of the query buffer
  \r                     reset (clear) the query buffer
  \s [FILE]              display history or save it to file
  \w FILE                write query buffer to file
6
Brain90

C’est une petite chose à souligner.
Utilisation de la fonction pg_get_viewdef ou pg_views ou information_schema.views vous obtiendrez toujours une version réécrite de votre DDL original.
La version remaniée peut être ou non identique à votre script DDL d'origine.

Si le gestionnaire de règles réécrit votre définition de vue, votre DLL originale _ sera perdue et vous ne pourrez lire que la version réécrite de votre définition de vue.
Toutes les vues ne sont pas réécrites, mais si vous utilisez la sous-sélection ou les jointures, vos vues le seront probablement.

2
Gianluca Rossini