Interroger un fichier plat pour alimenter la base de données avec les Foreign Data Wrapper

Intégrer la dernière version de TAXREF à la base de données grace aux "Foreign Data Wrapper"

 

  • Mise à jour du 28 juin 2017 avec ajout des colonnes sa & ta (TAXREF v10)
  • Mise à jour du 4 juillet 2016 avec ajout de la colonne cd_sup (TAXREF v9)

 

Depuis la version 9.1 de PostgreSQL, nous pouvons nous connecter depuis la base à diverses sources de données distantes.

Dans notre cas, nous allons créer une table externe, pointant vers le fichier txt de la dernière version du référentiel taxonomique proposée par l'INPN afin de migrer de la version 4 de ce référentiel à la version 5 (http://inpn.mnhn.fr/telechargement/referentielEspece)

CREATE EXTENSION file_fdw;

CREATE SERVER inpn FOREIGN DATA WRAPPER file_fdw;

CREATE SCHEMA fdw;

CREATE FOREIGN TABLE fdw.taxref_v10 (regne character varying, phylum character varying, classe character varying, 
ordre character varying, famille character varying, group1_inpn character varying,group2_inpn character varying, 
cd_nom character varying, cd_taxsup character varying, cd_sup character varying, cd_ref character varying, rang character varying, 
lb_nom character varying, lb_auteur character varying, nom_complet character varying, nom_complet_html character varying, nom_valide character varying, 
nom_vern character varying, nom_vern_eng character varying, habitat character varying, fr character varying, 
gf character varying, mar character varying, gua character varying, sm character varying, sb character varying, 
spm character varying, may character varying, epa character varying, reu character varying, sa character varying, ta character varying, taaf character varying, 
pf character varying, nc character varying, wf character varying, cli character varying, url character varying) SERVER inpn
OPTIONS (format 'csv', header 'true', filename '/tmp/TAXREFv10_utf8.txt', delimiter E'\t', null '');

Et voilà; nous pouvons faire une requête SQL sur notre fichier txt!

SELECT * FROM fdw.taxref_v9 WHERE ordre ILIKE 'ODONATA' limit 10;

Le fichier doit être lisible par postgres.

Un problème d'encodage a été rencontré sur les versions de TAXREF précédant la v10 de 2016, il a été résolu avec la commande

iconv -f LATIN1 -t UTF8 TAXREFv10.txt > TAXREFv10_utf8.txt

Les perspectives sont très intéressantes :

  • moissonnage des données externes (cas d'une base de données partenaire mysql)
  • interrogation de services web (json, xml)
  • et pourquoi pas des connecteurs vers les formats de fichier SIG ?

Ressources :

 

Tags: 

Les contenus des sites sig.cenlr.org et si.cenlr.org sont mis à disposition selon
les termes de la licence Creative Commons Attribution 3.0 France

Licence Creative Commons