Précédent   Forum des professionnels en informatique > Bases de données > PostgreSQL
PostgreSQL Forum PostgreSQL. Avant de poster -> F.A.Q PostGreSQL Tutoriels PostGreSQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 28/11/2011, 15h37   #1
Invité régulier
 
Tovo RAKOTOZANANY
Administrateur systèmes et réseaux
Inscription : février 2008
Messages : 46
Détails du profil
Informations personnelles :
Nom : Tovo RAKOTOZANANY
Localisation : Madagascar

Informations professionnelles :
Activité : Administrateur systèmes et réseaux
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : février 2008
Messages : 46
Points : 8
Points : 8
Par défaut utilisation de dblink_exec

Bonjour,

J'utilise postgresql "PostgreSQL 9.0.4, compiled by Visual C++ build 1500, 32-bit" sous windows et je veux insérer les données de ma table t1 vers une autre table t2 dans une base postgres 8.3 "PostgreSQL 8.3.11 on i486-pc-linux-gnu, compiled by GCC gcc-4.3.real (Debian 4.3.2-1.1) 4.3.2" sous linux.

Pour ce faire , j'ai écrit une fonction :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 
CREATE OR REPLACE FUNCTION f_affiche ()
RETURNS VOID
AS $$
DECLARE
    c1 cursor IS SELECT * FROM eth0;
    eth0_row eth0%ROWTYPE;
BEGIN
 
    FOR eth0_row IN c1
    LOOP
     PERFORM dblink_exec('dbname=suivBP host=10.128.1.2', 'INSERT INTO eth0 (rx,tx,datecurrent,heurecurrent) VALUES (' || eth0_row.rx || ', ' || eth0_row.tx || ', ' || eth0_row.datecurrent || ', ' || eth0_row.heurecurrent || ')');
    END LOOP;
    RETURN;
END
 
$$ LANGUAGE PLPGSQL


J'ai l'erreur suivante quand je lance ma fonction


Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 
ERREUR:  la fonction dblink_exec(unknown, text) n'existe pas
LINE 1: SELECT dblink_exec('dbname=suivBP host=10.128.1.2', 'INSERT ...
               ^
HINT:  Aucune fonction ne correspond au nom donné et aux types d'arguments.
Vous devez ajouter des conversions explicites de type.
QUERY:  SELECT dblink_exec('dbname=suivBP host=10.128.1.2', 'INSERT INTO eth0 (rx,tx,datecurrent,heurecurrent) VALUES (' || eth0_row.rx || ', ' || eth0_row.tx || ', ' || eth0_row.datecurrent || ', ' || eth0_row.heurecurrent || ')')
CONTEXT:  PL/pgSQL function "f_affiche" line 8 at PERFORM
 
********** Erreur **********
 
ERREUR: la fonction dblink_exec(unknown, text) n'existe pas
État SQL :42883
Astuce : Aucune fonction ne correspond au nom donné et aux types d'arguments.
Vous devez ajouter des conversions explicites de type.
Contexte : PL/pgSQL function "f_affiche" line 8 at PERFORM

Est-ce que c'est lié aux versions des deux bases ?
Si oui, est-que vous avez des idées ?
fanah est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/11/2011, 16h25   #2
ced
Rédacteur/Modérateur

 
Avatar de ced
 
Homme Cédric Duprez
Inscription : avril 2002
Messages : 3 823
Détails du profil
Informations personnelles :
Nom : Homme Cédric Duprez
Âge : 36
Localisation : France, Loiret (Centre)

Informations professionnelles :
Secteur : Agroalimentaire - Agriculture

Informations forums :
Inscription : avril 2002
Messages : 3 823
Points : 6 426
Points : 6 426
Bonjour,

La première des choses à vérifier, c'est que le module dblink est bien installé sur le serveur depuis lequel vous lancez cette fonction. Il n'est pas installé nativement avec PostgreSQL...
__________________
Rédacteur / Modérateur SGBD
Mes tutoriels et la FAQ MySQL

----------------------------------------------------
Pensez aux balises code et au tag
Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça
ced est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/11/2011, 16h39   #3
Invité régulier
 
Tovo RAKOTOZANANY
Administrateur systèmes et réseaux
Inscription : février 2008
Messages : 46
Détails du profil
Informations personnelles :
Nom : Tovo RAKOTOZANANY
Localisation : Madagascar

Informations professionnelles :
Activité : Administrateur systèmes et réseaux
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : février 2008
Messages : 46
Points : 8
Points : 8
Ah ok, je vois .
Est ce que tu peux me dire ou puis je trouver ce dblink ? Est ce qu'il y a des versions gratuit ?

(dblink pour postgres 9.0 sous windows vers postgres 8.3 sous linux)

Merci
fanah est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/11/2011, 08h18   #4
Invité régulier
 
Tovo RAKOTOZANANY
Administrateur systèmes et réseaux
Inscription : février 2008
Messages : 46
Détails du profil
Informations personnelles :
Nom : Tovo RAKOTOZANANY
Localisation : Madagascar

Informations professionnelles :
Activité : Administrateur systèmes et réseaux
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : février 2008
Messages : 46
Points : 8
Points : 8
J'ai trouvé le dblink , il est déjà présent dans
C:\Program Files\PostgreSQL\9.0\share\contrib

il fallait juste que je lance dblink.sql .

Maintenant cela marche quand les deux bases sont sur un même serveur, mais quand je tente de faire un insertion sur une table d'un autre serveur j'ai un erreur .

J'ai essayer de faire une connexion avec dblink_connect_u

Code :
1
2
 
SELECT dblink_connect_u('host=10.128.1.2 dbname=suiviBP user=postgres port=5432');

J'ai un problème de connexion , pourtant mon serveur 10.128.1.2 accepte toutes les connexions entrant et le port 5432 est ouvert

Ci après l'Erreur

Code :
1
2
3
4
5
6
7
8
9
10
 
ERREUR:  could NOT establish connection
DETAIL:  fe_sendauth: no password supplied
 
 
********** Erreur **********
 
ERREUR: could NOT establish connection
État SQL :08001
Détail :fe_sendauth: no password supplied

Des idées ?
fanah est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/11/2011, 08h29   #5
Invité régulier
 
Tovo RAKOTOZANANY
Administrateur systèmes et réseaux
Inscription : février 2008
Messages : 46
Détails du profil
Informations personnelles :
Nom : Tovo RAKOTOZANANY
Localisation : Madagascar

Informations professionnelles :
Activité : Administrateur systèmes et réseaux
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : février 2008
Messages : 46
Points : 8
Points : 8
J'ai oublier le mot de passe c'est pour ca que ca n'a pas fonctionné

Code :
1
2
 
SELECT dblink_connect_u('host=10.128.1.2 dbname=suiviBP user=postgres port=5432 password=test');
Donc dblink marche même avec 2 différents serveurs
fanah est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 00h08.


 
 
 
 
Partenaires

Hébergement Web