繁体   English   中英

对多个模式运行相同的 SQL 查询

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM