#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