IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PostgreSQL Discussion :

utilisation de dblink_exec


Sujet :

PostgreSQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Février 2008
    Messages
    47
    Détails du profil
    Informations personnelles :
    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 : 47
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 ?

  2. #2
    ced
    ced est déconnecté
    Rédacteur/Modérateur

    Avatar de ced
    Homme Profil pro
    Gestion de bases de données techniques
    Inscrit en
    Avril 2002
    Messages
    6 059
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Gestion de bases de données techniques
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2002
    Messages : 6 059
    Par défaut
    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 et R
    Mes tutoriels et la FAQ MySQL

    ----------------------------------------------------
    Pensez aux balises code et au tag
    Une réponse vous a plu ? N'hésitez pas à y mettre un
    Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça

  3. #3
    Membre confirmé
    Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Février 2008
    Messages
    47
    Détails du profil
    Informations personnelles :
    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 : 47
    Par défaut
    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

  4. #4
    Membre confirmé
    Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Février 2008
    Messages
    47
    Détails du profil
    Informations personnelles :
    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 : 47
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 ?

  5. #5
    Membre confirmé
    Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Février 2008
    Messages
    47
    Détails du profil
    Informations personnelles :
    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 : 47
    Par défaut
    J'ai oublier le mot de passe c'est pour ca que ca n'a pas fonctionné

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. utiliser les tag [MFC] [Win32] [.NET] [C++/CLI]
    Par hiko-seijuro dans le forum Visual C++
    Réponses: 8
    Dernier message: 08/06/2005, 15h57
  2. Réponses: 4
    Dernier message: 05/06/2002, 14h35
  3. utilisation du meta type ANY
    Par Anonymous dans le forum CORBA
    Réponses: 1
    Dernier message: 15/04/2002, 12h36
  4. [BCB5] Utilisation des Ressources (.res)
    Par Vince78 dans le forum C++Builder
    Réponses: 2
    Dernier message: 04/04/2002, 16h01
  5. Réponses: 2
    Dernier message: 20/03/2002, 23h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo