procedures:recuperation_et_integration_de_donnees_depuis_le_gbif

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
procedures:recuperation_et_integration_de_donnees_depuis_le_gbif [2026/01/31 22:39] dmaillardprocedures:recuperation_et_integration_de_donnees_depuis_le_gbif [2026/01/31 22:49] (Version actuelle) dmaillard
Ligne 99: Ligne 99:
   cut -f 1,4 /tmp/multimedia.txt > multimedia_import.txt   cut -f 1,4 /tmp/multimedia.txt > multimedia_import.txt
      
-Enfin, deux tables de destination sont créées dans la base de données (au premier usage), puis alimentées par ces données +Enfin, deux tables de destination sont créées dans la base de données (au premier usage) : 
  
   CREATE SCHEMA pinv_gbif;   CREATE SCHEMA pinv_gbif;
 +  
   CREATE TABLE pinv_gbif.tmp_gbif_data (   CREATE TABLE pinv_gbif.tmp_gbif_data (
   gbif_id bigint primary key,   gbif_id bigint primary key,
Ligne 132: Ligne 132:
      
   CREATE TABLE pinv_gbif.cor_multimedia (   CREATE TABLE pinv_gbif.cor_multimedia (
-  gbif_id int8 NULL+  gbif_id bigint
-  media_url text NULL+  media_url text
   );   );
 +  
 +Puis alimentées par les données récupérées : 
 +
 +  sudo su postgres
 +  psql -d <DB_name>
 +  \copy pinv_gbif.tmp_gbif_data
 +  FROM PROGRAM 'tail -n +2 /tmp/data_gbif_import.txt'
 +  WITH (
 +  FORMAT text,
 +  DELIMITER E'\t'
 +  );
 +  
 +  \copy pinv_gbif.cor_multimedia
 +  FROM PROGRAM 'tail -n +2 /tmp/multimedia_import.txt'
 +  WITH (
 +  FORMAT text,
 +  DELIMITER E'\t'
 +  );
 +
 +
 ==== Postgresql : Insérer ou actualiser les données en synthèse ==== ==== Postgresql : Insérer ou actualiser les données en synthèse ====
 +
 +À partir des données stockées dans les tables temporaires, l'objectif est de convertir ces données vers le format SINP, et d'alimenter la synthèse. Une fonction d'UPSERT est créée pour insérer les nouvelles données, et actualiser celles déjà disponibles. Dans les 2 cas, il est nécessaire que les jeux de données récupérées auprès du GBIF aient déjà un équivalent dans les métadonnées de l'instance GeoNature, avec le même uuid que celui du dataset dans la base de données du GBIF. 
 +
 +Il faut ensuite disposer d'une source "GBIF" dans gn_synthese.t_sources : 
 +
 +  INSERT INTO gn_synthese.t_sources()
 +  VALUES ();
 +
 +Pour permettre l'UPSERT, il est nécessaire d'avoir une contrainte d'unicité entre l'id_source correspondant au GBIF, et la colonne entity_source_pk_value, qui correspondra au gbif_id. 
 +
 +  ALTER TABLE gn_synthese.synthese ADD CONSTRAINT WHERE id_source=X;
 +
 +Une fois le ou les jeux de données préparés et bien identifiés (uuid), créer la fonction suivante : 
 +
 +  TODO
 +  
 +Puis déclencher l'UPSERT : 
 +
 +  SELECT pinv_gbif.upsert_gbif_data();
  
  • procedures/recuperation_et_integration_de_donnees_depuis_le_gbif.1769899142.txt.gz
  • Dernière modification : 2026/01/31 22:39
  • de dmaillard