簡體   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