Estou mapeando o uso da visualização em um esquema de banco de dados desconhecido. Recebi uma lista com algumas visualizações:
view_a
view_b
view_c
E eu quero pesquisar no meu banco de dados quais visualizações dependem de outras visualizações, por exemplo, se view_c for gerado por meio da seguinte consulta sql:
CREATE VIEW view_c AS SELECT * from view_a JOIN view_b WHERE view_a.column=344
Eu quero de alguma forma listar que view_c
usa view_a
e view_b
em folha de excel. Por enquanto é feito manualmente através da visualização das visualizações dll sql no Dbeaver e descobrindo a partir dele. Mas é um trabalho muito trabalhoso e pode perder algumas dependências de visualização também, então você tem alguma ideia de como posso gerar a planilha do excel através de uma consulta de information_schema.* tables
?
Você pode obter qual visualização usa outra visualização com a seguinte consulta:
E caso você queira pesquisar uma lista específica de visualizações:
Caso você precise de qual visualização materializada usa outra visualização materializada, você pode usar esta consulta:
A idéia toda é usar as
pg_views
visualizações normais oupg_matviews
juntá-las e pesquisar qual visualização usou outra visualização em seu código sql.Por exemplo, para ver qual visualização usa outra visualização materializada:
Foi testado no postgresql 11.
Você pode usar
view_table_usage
para isso:O seguinte mostrará todos os objetos que view_c usa.
Se você executar essa consulta usando
view_a
como entrada, obterá as tabelas (e outros objetos) queview_a
usa.