PostgreSQL La base de donnees la plus sophistiquee au monde.

Forums PostgreSQL.fr

Le forum officiel de la communauté francophone de PostgreSQL

Vous n'êtes pas identifié(e).

#1 Re : Réplication » dblink : copier les nouvelles entrées d'une table vers une autre base » 05/04/2019 14:22:52

D'accord,

Merci pour vos éclaircissements,

comme vous pouvez le constater je suis pas encore très à l'aise avec Postgres au delà d'une utilisation "basique",

bon week-end merci pour le coup de pouce

#3 Réplication » dblink : copier les nouvelles entrées d'une table vers une autre base » 03/04/2019 22:23:43

Anthony_Bayonne
Réponses : 5

Bonjour / Bonsoir,

je suis confronté à un problème "simple" en apparence mais qui me cause beaucoup de soucis, peut être pourriez-vous m'aider.

La base de données que j'utilise est surchargée. L'idée, c'est d'utiliser 2 bases : une qui supporte les requêtes, et une autre uniquement pour l'affichage. Toutes les heures, la base de requêtes met à jour ses données vers la base d'affichage.

Illustration :

test_dblink_reception

id | title 
1  | Hi, I'm first here :) 

test_dblink_emission

id | title 
1  | Hi, I'm a data ! 
2  | hehe I'm second row ! 
3  | Wait me, I'm 3 ! 
4  | Hi friends, I'm 4

Ce que j'aimerais réussir à faire :

test_dblink_reception

id | title 
1  | Hi, I'm first here :) 
2  | hehe I'm second row ! 
3  | Wait me, I'm 3 ! 
4  | Hi friends, I'm 4

En bonus : supprimer les entrées transférées de la table d'origine, c'est possible en une seule requête ?

test_dblink_emission

id | title 
1  | Hi, I'm a data !

Voilà la requête qui résume ou j'en suis :

SELECT
    test_dblink_reception.id,
    requete.id,
    requete.title
FROM
    test_dblink_reception,
    dblink('host=myhost user=user password=password dbname=database2', 'SELECT id, title FROM test_dblink_emission') AS requete (id int,
        title text)
GROUP BY
    test_dblink_reception.id,
    requete.id,
    requete.title
HAVING
    max(test_dblink_reception.id) < requete.id

Retour :

id | id | title
1  | 2  | hehe I'm second row !
1  | 3  | Wait me, I'm 3 !
1  | 4  | Hi friends, I'm 4

Le problème, c'est la première colonne, "id", que je ne souhaite pas insérer dans ma requête INSERT INTO, mais Postgres m'impose de la mettre dans le GROUP BY.

Est-ce que selon-vous c'est la meilleure façon de procéder ? Comment faire pour obtenir ce résultat sans le test_dblink_reception.id dans le GROUP BY ?

En vous remerciant,

Anthony

Pied de page des forums

Propulsé par FluxBB