Как увидеть код 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
Если вы хотите версию 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, вероятно, ваши представления будут переписаны.