[英]Run the same SQL query for multiple schemas
我希望编写一个可以遍历所有 20 多个模式的 SQL 查询,而无需不断替换search_path
。 我已经尝试过UNION ALL
但在大多数情况下,分离查询可能会花费我通过不难写的模式节省的所有时间。 查询本身可以是非常基本的,例如:
SELECT *FROM schm1.table1
UNION ALL
SELECT *FROM schm2.table1
谢谢您的帮助!
“不可能的事等你完成,请给奇迹两天的时间”。
恐怕你想要实现的只能通过SQL生成SQL来完成:
SELECT
CASE ROW_NUMBER() OVER(ORDER BY table_schema)
WHEN 1 THEN ''
ELSE 'UNION ALL '
END
||'SELECT * FROM '
||table_schema
||'.'
||table_name
|| CASE ROW_NUMBER() OVER(ORDER BY table_schema DESC)
WHEN 1 THEN ';'
ELSE CHR(10)
END
FROM tables
WHERE table_name='d_teas_scd'
ORDER BY table_schema
;
我用d_teas_scd
作为 table_name 得到的是:
SELECT * FROM flatt.d_teas_scd
UNION ALL SELECT * FROM public.d_teas_scd
UNION ALL SELECT * FROM star.d_teas_scd;
它不能保证所有同名的表都具有相同的结构,但这就是结果查询可能失败的原因——这是你的责任......
玩得开心
理智的马可
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.