PostgreSQL如何从不同Schema的多张表中查询数据?
PostgreSQL 跨Schema查询所有_table_2类表数据的解决方案
直接使用以下SQL语句,即可自动生成你需要的UNION ALL拼接查询:
SELECT string_agg('SELECT * FROM ' || table_schema || '.' || table_name, ' UNION ALL ') FROM information_schema.tables WHERE table_type = 'BASE TABLE' AND table_schema NOT IN ('pg_catalog', 'information_schema') AND table_name LIKE '%_table_2';
说明
- 该查询从系统视图
information_schema.tables中筛选出所有非系统Schema(排除pg_catalog和information_schema)、且表名以_table_2结尾的基表; - 通过
string_agg函数将每个表的查询语句用UNION ALL拼接成完整的SQL文本; - 执行此查询后,复制返回的结果文本,即可直接运行获取所有
_table_2类表的合并数据。
注意:使用
UNION ALL要求所有目标表的字段数量、字段类型和顺序完全一致,否则会执行报错。
内容的提问来源于stack exchange,提问作者Sab_91
相关产品推荐
相关产品推荐

