banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

#1 Tue 23 May 2023 13:51

mayelle.cardron
Juste Inscrit !
Lieu: Grenoble
Date d'inscription: 7 Feb 2022
Messages: 5

utilisation de dblink (et fdw)

Bonjour,
j'ai utilisé le dblink pour créer des vues matérialisés à partir d'une autre base. Cependant, ce moyen de procéder n'est pas optimal
Je l'emploi comme ci après:

Code:

CREATE MATERIALIZED VIEW schema.vm_nom
AS SELECT t1.colonne1, t1.colonne2 , t3.geom 

   FROM dblink('hostaddr=127.0.0.1 port=5432 user=user dbname=dbname  password=psswrd', 
'select colonne1, colonne2, geom from schema.t1') t1(colonne1 varchar(24),  
colonne2 varchar(127), geom geometry(geometry, 2154))

Y aurait-il un autre moyen de faire, notamment lorsque l'on appelle les colonnes avec leur type, ceci est très long ?

J'ai aussi pensé à l'extension fdw mais je ne comprend pas tout à fait comment ça s'utilise.
Je précise que dans mon cas, je connecte 2 bases en local.

Merci d'avance.

Hors ligne

 

#2 Tue 23 May 2023 16:40

Sylvain M.
Participant assidu
Lieu: Saint-Pierre-des-Nids (53)
Date d'inscription: 8 Sep 2005
Messages: 994

Re: utilisation de dblink (et fdw)

A mon avis, FDW est tout à fait adapté à votre besoin, et beaucoup moins lourd que dblink.

Voici un exemple de doc qui explique tout : https://www.synbioz.com/blog/tech/pg-foreign-table

Bonne lecture !

A+


Sylvain M.

Hors ligne

 

#3 Wed 24 May 2023 09:22

mayelle.cardron
Juste Inscrit !
Lieu: Grenoble
Date d'inscription: 7 Feb 2022
Messages: 5

Re: utilisation de dblink (et fdw)

Je pense aussi.
J'ai regardé votre lien, mais peut-on réellement créer une vue matérialisé? De plus, il utilise CREATE FOREIGN TABLE et cite chaque type de chaque colonne, ce qui est long aussi je trouve.

Hors ligne

 

#4 Wed 24 May 2023 11:32

tumasgiu
Membre
Lieu: Ajaccio
Date d'inscription: 5 Jul 2010
Messages: 1146

Re: utilisation de dblink (et fdw)

Bonjour,

Vous n'allez créer votre table distante qu'une fois, vous pouvez ensuite l'utiliser dans vos requêtes comme n'importe quelle autre table, sans avoir a passer par une vue.

à partir de Postgres 11, vous avez la commande import foreign schema qui vous facilite bien la tâche de création des tables distantes : https://docs.postgresql.fr/15/sql-impor … chema.html

Vous pouvez créér une vue matérialisée à partir de la table distante si c'est nécessaire, par exemple si il y a trop de latence pour accéder à la table distante, mais vu que vos deux bases sont en local, ca ne devrait pas être un souçi. A noter que le planificateur de requête est capable d'optimiser l'accès aux tables distantes et se servir des indexes.

Dernière modification par tumasgiu (Wed 24 May 2023 17:54)

Hors ligne

 

Pied de page des forums

Powered by FluxBB