Esiste un modo semplice per visualizzare il codice utilizzato per creare una vista utilizzando il client della riga di comando PostgreSQL?
Qualcosa come il SHOW CREATE VIEW
da MySQL.
Esiste un modo semplice per visualizzare il codice utilizzato per creare una vista utilizzando il client della riga di comando PostgreSQL?
Qualcosa come il SHOW CREATE VIEW
da MySQL.
Risposte:
Ho dovuto tornare qui per cercare pg_get_viewdef
(come ricordarlo !!), quindi ho cercato un comando più memorabile ... e l'ho ottenuto:
\d+ viewname
Puoi vedere tipi simili di comandi digitando \?
sulla riga di comando pgsql.
Suggerimento bonus: il comando emacs sql-postgres
rende pgsql molto più piacevole (modifica, copia, incolla, cronologia dei comandi).
\dv
elenca tutte le visualizzazioni
select pg_get_viewdef('viewname', true)
Un elenco di tutte queste funzioni è disponibile nel manuale:
http://www.postgresql.org/docs/current/static/functions-info.html
select pg_get_viewdef('viewname'::regclass, true)
SELECT pg_get_viewdef(to_regclass('viewname'))
(richiede almeno v9.4).
select definition from pg_views where viewname = 'my_view'
select definition from pg_views where schemaname = 'my_schema' and viewname = 'my_view'
Se si desidera una versione ANSI SQL-92:
select view_definition from information_schema.views where table_name = 'view_name';
GoodNews dalla v.9.6 e successive, la modifica della vista ora è nativa da psql. Richiama il \ev
comando. Le definizioni di visualizzazione verranno visualizzate nell'editor configurato.
julian@assange=# \ev {your_view_names}
Bonus. Alcuni comandi utili per interagire con il buffer delle query.
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
Questa è una piccola cosa da sottolineare.
Usando la funzione pg_get_viewdef o pg_views o information_schema.views otterrai sempre una versione riscritta del tuo DDL originale.
La versione riscritta può essere o meno la stessa del tuo script DDL originale.
Se Rule Manager riscrive la definizione della vista, la DLL originale andrà persa e sarai in grado di leggere l'unica versione riscritta della definizione della vista.
Non tutte le visualizzazioni vengono riscritte, ma se si utilizza la selezione secondaria o si unisce probabilmente le visualizzazioni verranno riscritte.