#1 Wed 02 September 2015 14:45
- Pierre.Brochard
- Participant occasionnel
- Date d'inscription: 8 Apr 2015
- Messages: 33
Alimenter une base depuis une autre -- dblink
Bonjour à tous,
Voici ma problématique.
Je travail sur 2 serveurs dictincts.
Sur mon premier serveur je possède une base (d'alimentation) qui contient les données. (base.1)
Depuis cette première base j'ai créé une requête conséquente qui contient l'ensemble de mes données. (base.2)
Sur ma deuxième base j'ai créer une table pour accueillir ces données.
Je viens de découvrir dblink.
J'ai :
from dblink_connect ('hostaddr=adresse base.1 port=5432 dbname= mabase1 user=user_base.1 password= password_base.1);
insert into base.2(column.1 (base.1), column.2 (base.1).... column.23(base.1))
SELECT *
FROM dblink('hostaddr=adresse base.1 port=5432 dbname= mabase2 user=user_base.2 password= password_base.2)
select remote_column1 ltrim(remote_column2, ''TEST'') from edealPLFOR
where base.2 ilike ''TEST%''
) as t(column1.(base.1) as varchar,column2.(base.1) as varcharcharacter varying(30)) ;
J'ai le message d'erreur suivant :
'la fonction dblink(unknown, unknown) n'existe pas'
Pourriez vous m'aider.
Hors ligne
#2 Wed 02 September 2015 16:10
Re: Alimenter une base depuis une autre -- dblink
Bonjour,
Il faut installer l'extension avec
Code:
CREATE EXTENSION dblink
mais il est maintenant recommandé d'utiliser les Foreign Data Wrappers (postgres_fdw).
voir à ce sujet http://docs.postgresqlfr.org/9.4/postgres-fdw.html
Jean-Marie
Azimut
Hors ligne
#3 Wed 02 September 2015 17:08
- Pierre.Brochard
- Participant occasionnel
- Date d'inscription: 8 Apr 2015
- Messages: 33
Re: Alimenter une base depuis une autre -- dblink
D'accord. Je vous remercie. Je vais me pencher sur la doc du coup.
Pierre
Hors ligne
#4 Thu 03 September 2015 15:22
- Pierre.Brochard
- Participant occasionnel
- Date d'inscription: 8 Apr 2015
- Messages: 33
Re: Alimenter une base depuis une autre -- dblink
Je reviens vers vous car finalement je suis resté sur l'idée du dblink. Fonction de ma version postgis.
SELECT *
from dblink_connect('maconnexion','host=10.118.20.201 port=5432 dbname= nombase.1 user=user password= passwordl')
INSERT INTO table2 -- entrer la table cible
from dblink ('maconnexion', -- colonne octagri concernée
'select table1.colonne1 from table1') -- sélection sql octagri
as table2(prestation character varying(30))
where libellé colonne table2 like '%PLAN%'; -- colonne
A partir du insert into les erreurs apparaissent.
Connaîtriez vous la manière d'opérer.
Merci.
Hors ligne
#5 Thu 03 September 2015 16:38
- JP LLORENS
- Participant assidu
- Date d'inscription: 12 Nov 2008
- Messages: 231
Re: Alimenter une base depuis une autre -- dblink
Bonjour.
J'aurai tendance à écrire :
INSERT into matable (monattribut) (select table2.prestation from dblink (...)as table2(...) where maclause)
Cordialement
JP
Dernière modification par JP LLORENS (Thu 03 September 2015 16:40)
Hors ligne
#6 Tue 08 September 2015 11:39
- Pierre.Brochard
- Participant occasionnel
- Date d'inscription: 8 Apr 2015
- Messages: 33
Re: Alimenter une base depuis une autre -- dblink
Merci.
Cordialement
Hors ligne