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

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

Что-то вроде SHOW CREATE VIEW от MySQL.

Ответ 1

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

\d+ viewname

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

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

Ответ 3

select definition from pg_views where viewname = 'my_view'

Ответ 4

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

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

Ответ 5

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

[email protected]=# \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

Ответ 6

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

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