Есть ли простой способ увидеть код, используемый для создания представления с помощью клиента командной строки PostgreSQL?
Нечто подобное SHOW CREATE VIEW
из MySQL.
Есть ли простой способ увидеть код, используемый для создания представления с помощью клиента командной строки PostgreSQL?
Нечто подобное SHOW CREATE VIEW
из MySQL.
Ответы:
Пришлось возвращаться сюда, чтобы посмотреть pg_get_viewdef
(как это запомнить !!), поэтому искал более запоминающуюся команду ... и получил ее:
\d+ viewname
Вы можете увидеть похожие команды, набрав \?
в командной строке pgsql.
Дополнительный совет: команда emacs sql-postgres
делает pgsql намного более приятным (редактирование, копирование, вставка, история команд).
\dv
список всех просмотров
select pg_get_viewdef('viewname', true)
Список всех этих функций доступен в руководстве:
http://www.postgresql.org/docs/current/static/functions-info.html
select pg_get_viewdef('viewname'::regclass, true)
SELECT pg_get_viewdef(to_regclass('viewname'))
(требуется как минимум v9.4).
select definition from pg_views where viewname = 'my_view'
select definition from pg_views where schemaname = 'my_schema' and viewname = 'my_view'
Если вы хотите версию ANSI SQL-92:
select view_definition from information_schema.views where table_name = 'view_name';
GoodNews от v.9.6 и выше, редактирование View теперь является родным для psql. Просто вызовите \ev
команду. Просмотр определений будет отображаться в вашем настроенном редакторе.
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.views, вы всегда получите переписанную версию вашего исходного DDL.
Переизданная версия может совпадать или не совпадать с исходным сценарием DDL.
Если менеджер правил переписывает ваше определение представления, ваша исходная DLL будет потеряна, и вы сможете прочитать только переписанную версию определения представления.
Не все виды переписываются, но если вы используете sub-select или объединения, вероятно, ваши представления будут переписаны.