PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Zusammenführen von Ergebnissen aus zwei separaten Datenbanken

Gemäß http://wiki.postgresql.org/wiki/FAQ

Es gibt keine Möglichkeit, eine andere Datenbank als die aktuelle abzufragen. Da PostgreSQL datenbankspezifische Systemkataloge lädt, ist es ungewiss, wie sich eine datenbankübergreifende Abfrage überhaupt verhalten soll. contrib/dblink ermöglicht datenbankübergreifende Abfragen mithilfe von Funktionsaufrufen. Natürlich kann ein Client auch gleichzeitig Verbindungen zu verschiedenen Datenbanken herstellen und die Ergebnisse clientseitig zusammenführen.

BEARBEITEN :3 Jahre später (März 2014) wurde dieser FAQ-Eintrag überarbeitet und ist hilfreicher:

Wie führe ich Abfragen mit mehreren Datenbanken durch?

Es gibt keine Möglichkeit, eine andere Datenbank als die aktuelle direkt abzufragen. Da PostgreSQL datenbankspezifische Systemkataloge lädt, ist es ungewiss, wie sich eine datenbankübergreifende Abfrage überhaupt verhalten soll.

Die SQL/MED-Unterstützung in PostgreSQL ermöglicht die Erstellung eines "Fremddaten-Wrappers", der Tabellen in einer entfernten Datenbank mit der lokalen Datenbank verknüpft. Die entfernte Datenbank kann eine andere Datenbank auf derselben PostgreSQL-Instanz oder eine Datenbank auf der anderen Seite der Welt sein spielt keine Rolle. postgres_fdw ist in PostgreSQL 9.3 integriert und enthält Lese-/Schreibunterstützung; eine Nur-Lese-Version für 9.2 kann kompiliert und als Contrib-Modul installiert werden.

contrib/dblink ermöglicht datenbankübergreifende Abfragen über Funktionsaufrufe und ist für viel ältere PostgreSQL-Versionen verfügbar. Im Gegensatz zu postgres_fdwit kann es keine Bedingungen an den Remote-Server "herunterdrücken", sodass es oft dazu führt, dass viel mehr Daten abgerufen werden, als Sie benötigen.

Natürlich kann ein Client auch gleichzeitig Verbindungen zu verschiedenen Datenbanken herstellen und die Ergebnisse clientseitig zusammenführen.