Gibt es eine einfache Möglichkeit, den Code anzuzeigen, der zum Erstellen einer Ansicht mit dem PostgreSQL-Befehlszeilenclient verwendet wird?
So etwas wie das SHOW CREATE VIEW
von MySQL.
Gibt es eine einfache Möglichkeit, den Code anzuzeigen, der zum Erstellen einer Ansicht mit dem PostgreSQL-Befehlszeilenclient verwendet wird?
So etwas wie das SHOW CREATE VIEW
von MySQL.
Antworten:
Ich musste hierher zurückkehren, um nachzuschauen pg_get_viewdef
(wie man sich daran erinnert !!), also suchte ich nach einem denkwürdigeren Befehl ... und bekam ihn:
\d+ viewname
Sie können ähnliche Arten von Befehlen \?
anzeigen, indem Sie in die Befehlszeile pgsql eingeben.
Bonus-Tipp: Der Befehl emacs sql-postgres
macht pgsql viel angenehmer (Bearbeiten, Kopieren, Einfügen, Befehlsverlauf).
\dv
listet alle Ansichten auf
select pg_get_viewdef('viewname', true)
Eine Liste aller dieser Funktionen finden Sie im Handbuch:
http://www.postgresql.org/docs/current/static/functions-info.html
select pg_get_viewdef('viewname'::regclass, true)
SELECT pg_get_viewdef(to_regclass('viewname'))
(erfordert mindestens v9.4).
select definition from pg_views where viewname = 'my_view'
select definition from pg_views where schemaname = 'my_schema' and viewname = 'my_view'
Wenn Sie eine ANSI SQL-92-Version wünschen:
select view_definition from information_schema.views where table_name = 'view_name';
GoodNews ab Version 9.6, Ansichtsbearbeitung ist jetzt nativ von psql. Rufen Sie einfach den \ev
Befehl auf. Ansichtsdefinitionen werden in Ihrem konfigurierten Editor angezeigt.
julian@assange=# \ev {your_view_names}
Bonus. Ein nützlicher Befehl zur Interaktion mit dem Abfragepuffer.
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
Dies ist eine kleine Sache, auf die man hinweisen sollte.
Mit der Funktion pg_get_viewdef oder pg_views oder information_schema.views erhalten Sie immer eine umgeschriebene Version Ihrer ursprünglichen DDL.
Die überarbeitete Version kann mit Ihrem ursprünglichen DDL-Skript identisch sein oder nicht.
Wenn der Regel-Manager Ihre Ansichtsdefinition neu schreibt, geht Ihre ursprüngliche DLL verloren und Sie können nur die neu geschriebene Version Ihrer Ansichtsdefinition lesen.
Nicht alle Ansichten werden neu geschrieben, aber wenn Sie Unterauswahl oder Verknüpfungen verwenden, werden Ihre Ansichten wahrscheinlich neu geschrieben.