Connecter une base de données à une autre

Objectif

Il est parfois nécessaire de travailler avec des tables qui sont hébergées dans une autre base de données, voire dans un autre serveur. Le composant Dblink permet de réaliser la connexion.

Pour obtenir les informations officielles sur ce composant : https://www.postgresql.org/docs/12/contrib-dblink-connect.html

Créer l'extension dblink

Déclarer un serveur dans la base de données

Il existe plusieurs solutions pour se connecter. Celle qui consiste à déclarer un serveur dédié à cette connexion vers la base distante est probablement la plus facile à gérer sur le long terme.

Voici la liste des commandes à exécuter pour créer le serveur, puis donner des droits de connexion.

Le login monlogin est celui qui sera utilisé pour se connecter à la base locale. Le login logindistant et son mot de passe associé est celui qui sera utilisé pour accéder aux données dans le serveur distant.

Vous pouvez également créer un login dédié à cet usage et lui donner les droits adéquats :

Cette opération est à réaliser pour tous les logins concernés.

Se connecter à la base de données distante et exécuter des requêtes

Vous devez initier une connexion pour chaque session :

Si vous avez déclaré plusieurs connexions distantes, une seule suffit pour connecter tous les serveurs distants (elles sont gérées par le composant dblink).

Pour exécuter une requête :

Vous devez définir les types de données qui seront attendues en retour de la requête, Postgresql n'étant pas capable de les récupérer lui-même (dblink est générique, et ne connait pas les requêtes adaptées à chaque cas de figure).

Je vous conseille de créer les vues pour les requêtes les plus courantes, particulièrement si vous voulez faire des jointures avec les tables locales, par exemple :