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