2017-01-16 1 views
0

Ich hoffe, eine SQL-Abfrage zu schreiben, die alle 20 Schemata durchläuft, ohne ständig die search_path ersetzen zu müssen. Ich habe versucht, UNION ALL, aber in den meisten Situationen die Trennung der Abfrage dauert möglicherweise die ganze Zeit, die ich durch nicht hart schriftlich Schemata gespeichert. Die Abfrage selbst kann sehr einfach sein wie:Führen Sie die gleiche SQL-Abfrage für mehrere Schemas

SELECT *FROM schm1.table1 

UNION ALL 

SELECT *FROM schm2.table1 

Vielen Dank für Ihre Hilfe!

+0

Welchen DB Explorer benutzen Sie? oder wie speichern Sie die Ergebnisse nach? kopieren + einfügen? –

Antwort

0

"Das Unmögliche wird abgeschlossen, wie Sie warten, bitte erlauben Sie zwei Tage für die Lieferung von Wundern".

Ich habe Angst, was Sie erreichen wollen, können von SQL-Erzeugungs SQL erfolgen:

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 
; 

Was ich mit d_teas_scd als table_name bekommen, ist dies:

SELECT * FROM flatt.d_teas_scd 
UNION ALL SELECT * FROM public.d_teas_scd 
UNION ALL SELECT * FROM star.d_teas_scd; 

Es kann‘ t garantieren, dass alle Tabellen mit dem gleichen Namen die gleiche Struktur haben, obwohl deshalb die resultierende Abfrage fehlschlagen könnte - das ist Ihre Verantwortung ...

Happy playing

Marco der Sane

Verwandte Themen