¿Hay una manera fácil de ver el código utilizado para crear una vista usando el cliente de línea de comandos PostgreSQL?
Algo como el SHOW CREATE VIEW
de MySQL.
¿Hay una manera fácil de ver el código utilizado para crear una vista usando el cliente de línea de comandos PostgreSQL?
Algo como el SHOW CREATE VIEW
de MySQL.
Respuestas:
Seguí teniendo que regresar aquí para buscar pg_get_viewdef
(¡cómo recordarlo!), Así que busqué un comando más memorable ... y lo obtuve:
\d+ viewname
Puede ver tipos similares de comandos escribiendo \?
en la línea de comando pgsql.
sql-postgres
Consejo adicional : el comando emacs hace que pgsql sea mucho más agradable (editar, copiar, pegar, historial de comandos).
\dv
select pg_get_viewdef('viewname', true)
Una lista de todas esas funciones está disponible en el manual:
http://www.postgresql.org/docs/current/static/functions-info.html
select pg_get_viewdef('viewname'::regclass, true)
SELECT pg_get_viewdef(to_regclass('viewname'))
(requiere al menos 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 desea una versión ANSI SQL-92:
select view_definition from information_schema.views where table_name = 'view_name';
GoodNews de v.9.6 y superior, la edición de vistas ahora es nativa de psql. Solo invoque el \ev
comando. Ver definiciones se mostrará en su editor configurado.
julian@assange=# \ev {your_view_names}
Prima. Algún comando útil para interactuar con el búfer de consultas.
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
Esto es algo pequeño para señalar.
Usando la función pg_get_viewdef o pg_views o information_schema.views siempre obtendrá una versión reescrita de su DDL original.
La versión reescrita puede ser o no la misma que su script DDL original.
Si el Administrador de reglas reescribe su definición de vista, su DLL original se perderá y podrá leer la única versión reescrita de su definición de vista.
No todas las vistas se reescriben, pero si usa una selección secundaria o se une, probablemente sus vistas se reescribirán.