使用 pgAdmin 4 对 PostgreSQL 数据库的所有表执行 select 查询
Do a select query on all tables of PostgreSQL database using pgAdmin 4
我有一个包含大约 90 个模式的数据库。在这些模式中的每一个中,我转到“物化视图”并转到一个名为“product_visitor_view”的视图,然后创建一个 SELECT 脚本,然后编写此脚本和 运行 并查看结果:
SELECT priority, count(*)
FROM ag_modem_01.product_visitor_view
group by priority;
但是,我无法对所有 90 个架构都执行此操作。有没有一种方法可以对所有模式执行此操作,并且结果会针对页面中的每个模式显示,我该如何执行此操作?
提前致谢。
您可以使用以下查询为每个模式准备 SQL。
这个想法是,而不是手动编写所有查询,您可以使用系统 table pg_matviews,其中包含有关物化视图的信息。
一旦你有了列表,只需要在所有行之间做联合。
select
string_agg('select '''||schemaname||''' as schema,priority,count(*) from '||schemaname||'.'||matviewname
||' group by priority '||chr(10),' Union All '||chr(10)
)
from pg_matviews
where matviewname='product_visitor_view'
and ispopulated=true; -- to filter out Views which has not been populated
获取此查询的输出并运行它在查询工具中。
我有一个包含大约 90 个模式的数据库。在这些模式中的每一个中,我转到“物化视图”并转到一个名为“product_visitor_view”的视图,然后创建一个 SELECT 脚本,然后编写此脚本和 运行 并查看结果:
SELECT priority, count(*)
FROM ag_modem_01.product_visitor_view
group by priority;
但是,我无法对所有 90 个架构都执行此操作。有没有一种方法可以对所有模式执行此操作,并且结果会针对页面中的每个模式显示,我该如何执行此操作?
提前致谢。
您可以使用以下查询为每个模式准备 SQL。 这个想法是,而不是手动编写所有查询,您可以使用系统 table pg_matviews,其中包含有关物化视图的信息。 一旦你有了列表,只需要在所有行之间做联合。
select
string_agg('select '''||schemaname||''' as schema,priority,count(*) from '||schemaname||'.'||matviewname
||' group by priority '||chr(10),' Union All '||chr(10)
)
from pg_matviews
where matviewname='product_visitor_view'
and ispopulated=true; -- to filter out Views which has not been populated
获取此查询的输出并运行它在查询工具中。