Как увидеть код CREATE VIEW для представления в PostgreSQL?

есть ли простой способ увидеть код, используемый для создания представления с помощью клиента командной строки PostgreSQL?

что-то вроде SHOW CREATE VIEW из MySQL.

6 ответов


продолжал возвращаться сюда, чтобы посмотреть вверх pg_get_viewdef (как помню!!), поэтому искали более запоминающуюся команду... и получил его:

\d+ viewname

вы можете увидеть похожие команды, введя \? в командной строке pgsql.

бонусный совет: команда emacs sql-postgres делает pgsql намного более приятным (редактирование, копирование, вставка, история команд).


select pg_get_viewdef('viewname', true)

список всех этих функций доступен в руководстве:

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


select definition from pg_views where viewname = 'my_view'

Если вы хотите версию ANSI SQL-92:

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

GoodNews из v. 9.6 и выше, редактирование вида теперь является родным из psql. Просто вызовите его с помощью этой команды, определения представления будут отображаться в Редакторе по умолчанию.

julian@assange=# \ev {your_view_names}

бонус. Некоторые полезные команды для взаимодействия с буфером запросов.

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

Это небольшая вещь, чтобы указать.
Используя функцию pg_get_viewdef или pg_views или information_schema.вид вы всегда получите переписанную версию вашего оригинального DDL.
В rewited версии может и не быть такой же, как originl сценария DDL.

Если диспетчер правил перепишет определение представления, исходная библиотека DLL будет потеряна, и вы сможете прочитать только перезаписанную версию определения представления.
Не все представления переписываются но если вы используете sub-select или joins, вероятно, ваши представления будут переписаны.