Existe-t-il un moyen d'obtenir toutes les tables utilisées dans une requête SELECT complexe dans Postgesql sans utiliser un analyseur SQL réel? ver. 9.5 et ci-dessus seront utilisés.Obtenez une liste de toutes les tables utilisées dans une requête Postgresql SELECT
Répondre
Essayez:
create or replace function get_query_tables(p_query text) returns text[] language plpgsql as $$
declare
x xml;
begin
execute 'explain (format xml) ' || p_query into x;
return xpath('//explain:Relation-Name/text()', x, array[array['explain', 'http://www.postgresql.org/2009/explain']])::text[];
end $$;
select get_query_tables('your query here');
TableList:=TStringList.Create;
pgConnection1.GetTableNames(TableList,False);
Q ne concerne pas toutes les tables de la base de données, mais les tables impliquées dans la requête. – Abelisto
Oui OK, je devrais lire la question plus attentivement. Beaucoup plus complexe que je pensais. J'essaie juste de contribuer quand j'ai une chance. – becsystems
Bien que ce code puisse (ou non) répondre à la question, vous devez ajouter une explication indiquant pourquoi/comment il résout le problème. – BDL
Quel langage de programmation utilisez-vous? Pour les jointures simples, le pilote JDBC renverra cette information par le biais de 'ResultSetMetaData.getTableName (int)' –