Existe-t-il un moyen simple de voir le code utilisé pour créer une vue à l'aide du client de ligne de commande PostgreSQL?
Quelque chose comme celui SHOW CREATE VIEW
de MySQL.
Existe-t-il un moyen simple de voir le code utilisé pour créer une vue à l'aide du client de ligne de commande PostgreSQL?
Quelque chose comme celui SHOW CREATE VIEW
de MySQL.
Réponses:
Je n'ai pas eu à revenir ici pour chercher pg_get_viewdef
(comment s'en souvenir !!), alors j'ai cherché une commande plus mémorable ... et je l'ai obtenue:
\d+ viewname
Vous pouvez voir des sortes de commandes similaires en tapant \?
sur la ligne de commande pgsql.
Astuce bonus: la commande emacs sql-postgres
rend pgsql beaucoup plus agréable (éditer, copier, coller, historique des commandes).
\dv
répertorie toutes les vues
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
select pg_get_viewdef('viewname'::regclass, true)
SELECT pg_get_viewdef(to_regclass('viewname'))
(nécessite au moins la v9.4).
select definition from pg_views where viewname = 'my_view'
select definition from pg_views where schemaname = 'my_schema' and viewname = 'my_view'
Si vous voulez une version ANSI SQL-92:
select view_definition from information_schema.views where table_name = 'view_name';
GoodNews à partir de la version 9.6 et supérieure, l'édition de vues est maintenant native de psql. Appelez simplement la \ev
commande. 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
C'est une petite chose à souligner.
En utilisant la fonction pg_get_viewdef ou pg_views ou information_schema.views, vous obtiendrez toujours une version réécrite de votre DDL d'origine.
La version modifiée peut être ou non la même que votre script DDL d'origine.
Si le gestionnaire de règles réécrit votre définition de vue, votre DLL d'origine sera perdue et vous pourrez lire uniquement 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 seront probablement réécrites.