Category

PostgreSQL/PostGIS

Restaurer une base de donnée PostgreSQL depuis une sauvegarde de fichiers

By | Toutes les catégories, Tutoriels, PostgreSQL/PostGIS, (BDD) Base de données | No Comments

Testé sur debian Jessie et PostgreSQL 9.4

Le moyen le plus sûr pour sauvegarder une base de donnée est d’effectuer régulièrement des dumps avec la commande pg_dump.

Néanmoins, il est possible d’accéder aux données d’une base à partir des fichiers contenus dans le dossier /var/lib/postgres/9.4/main

Restaurer une base de donnée depuis les fichiers

Prérequis :
– Avoir une copie du dossier /var/lib/postgres/9.4/main

Dans l’idéal, démarrer un OS identique à la version hôte de la base à restaurer. Cela dit, cela à bien fonctionner pour restaurer des données de PostgreSQL initialement installé sur debian 8 Jessie sur une debian 9 Stretch.

# Installer postgresql-9.4 et les dependances de votre base de données.
su
apt-get install postgresql-9.4
apt-get install postgis
apt-get install postgresql-9.4-postgis-2.3

# Stopper PostgreSQL
service postgresql stop

Modifier le fichier de configuration pour pointer vers votre sauvegarde : dupliquer la ligne data_directory, commenter la version originale et modifier le chemin vers votre dossier à restaurer.

nano /etc/postgresql/9.4/main/postgresql.conf

Vous obtenez

# data_directory = '/var/lib/postgresql/9.4/main' # use data in another directory
data_directory = '/media/backups/var/lib/postgresql/9.4/main'

Changer le propriétaire et les droits de votre dossier à restaurer et lancer PostegreSQL

chown postgres /media/backups/var/lib/postgresql/9.4/main
chmod 700 /media/backups/var/lib/postgresql/9.4/main

service postgresql start

Connectez-vous en tant qu’utilisation

postgres

et lister les bases de données accessibles.

su postgres
psql -l # lister les bases disponibles ainsi que leurs attributs

Normalement, vous devriez voir vos bases de données à restaurer. Il ne reste plus qu’a faire un dump propre des bases afin de pouvoir les remonter sur un autre serveur fonctionnel.

pg_dump -Fc nom_bdd > database.bak # dump en .bak
pg_dump nom_bdd > database.sql # dump en fichier texte .sql

FME 2017 : récupérer les photos au format .jpg stockées en blob dans ODK Aggregate

By | (SIG) Système d'Information Géographique, Tutoriels, PostgreSQL/PostGIS, (BDD) Base de données, FME | No Comments

Via l’application smartphone ODK Collect, nous pouvons associer une photo à toute donnée naturaliste collectée.

Lors de l’envoi du relevé sur le serveur Aggregate, cette photo est insérée dans la base de données PostgreSQL au format blob (Binary Large OBject).

 

Avec FME, nous allons pouvoir associer à une observation sa photo, puis l’enregistrer au format .jpg sur son disque.

Nous utilisons SICEN pour organiser nos observations : on nommera donc la photo avec l’identifiant unique id_obs attribué par SICEN.

 

Voici les tables concernées dans la base de données Aggregate :

Table IMAGE_OBS_BN : contient l’identifiant de l’observation (_PARENT_URI) stockée dans la table SAISIE_OBSERVATION et un identifiant unique (_URI)

Table IMAGE_OBS_BLB : contient le champ blob avec la photo (VALUE) et un identifiant unique (_URI)

Table IMAGE_OBS_REF : fait le lien entre les deux tables précédentes (_SUB_AURI = IMAGE_OBS_BLB._URI et _DOM_AURI = IMAGE_OBS_BN._URI)

 

 

Transformers concernés

DatabaseJoiner : effectuer les jointures entre les tables

AttributeRenamer : renommer les champs pour plus de clarté dans le traitment

StringConcatenator : paramétrer le chemin d’enregistrement sur notre disque

AttributeFileWriter : enregistrer la photo sur notre disque

 

 

Chaîne de traitement

traitement_FME

 

1 : On récupère l’identifiant _URI de la table IMAGE_OBS_BN correspondant à l’identifiant de l’observation dans Aggregate (on a déjà récupéré cet identifiant antérieurement dans le traitement et on l’a renommé id_infos_obs).

On renomme l’identifiant récupéré pour plus de clarté.

joiner_BN       AttributeRenamer_BN

 

2 : On répète le traitement effectué en 1 mais cette fois-ci pour récupérer l’identifiant _SUB_AURI de la table IMAGE_OBS_REF

joiner_REF       AttributeRenamer_REF

 

3 : On répète le même traitement pour récupérer la valeur de l’attribut VALUE qui contient la photo au format blob

joiner_BLB

 

4 : On créer l’attribut photo_path pour créer le chemin de stockage du fichier avec son nom.

On utilise l’attribut nextval que l’on a récupéré antérieurement dans le traitement et qui correspond à l’identifiant unique de la donnée dans le système SICEN

stringconcatenator

 

5 : On enregistre la photo à partir de l’attribut VALUE récupéré grâce aux jointures vers le disque (attribut photo_path)

filewriter