Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Nouveau script de chargement des données #568

Merged
merged 38 commits into from
Jul 6, 2021
Merged
Show file tree
Hide file tree
Changes from 36 commits
Commits
Show all changes
38 commits
Select commit Hold shift + click to select a range
8b8ffba
lecture du fichier de configuration
MaelREBOUX Apr 13, 2021
19c7cff
purge DB : structure
MaelREBOUX Apr 13, 2021
260bffc
config sample
MaelREBOUX Apr 13, 2021
8f500a9
fonction replaceAndLaunch
MaelREBOUX Apr 13, 2021
2d9ede6
DROP TABLES
MaelREBOUX Apr 13, 2021
38c62c5
drop tables
MaelREBOUX Apr 13, 2021
aef482b
create tables
MaelREBOUX Apr 13, 2021
98c7992
DROP MATERIALIZED VIEW
MaelREBOUX Apr 13, 2021
a70824a
Update config_sample.sh
MaelREBOUX Apr 14, 2021
beb3ec2
DROP views BEFORE tables
MaelREBOUX Apr 14, 2021
74b1385
CREATE MATERIALIZED VIEW (comme avant)
MaelREBOUX Apr 14, 2021
f8caed3
Update cadastrapp_load_data.sh
MaelREBOUX Apr 14, 2021
4872752
indexes des vues matérialisées
MaelREBOUX Apr 14, 2021
5ebc8c2
vue matérialisée uf_parcelle
MaelREBOUX Apr 14, 2021
988c0ed
create views dans la même BD : first shot
MaelREBOUX Apr 14, 2021
8b187ad
vue proprietaire
MaelREBOUX Apr 15, 2021
771f944
CoProprieteParcelle
MaelREBOUX Apr 15, 2021
9e6b0e2
Update CoProprieteParcelle.sql
MaelREBOUX Apr 15, 2021
7a400a1
proprietaire_parcelle
MaelREBOUX Apr 15, 2021
0b92606
proprietebatie
MaelREBOUX Apr 15, 2021
0fc26bd
Update Commune.sql
MaelREBOUX Apr 15, 2021
446ad59
proprietenonbatie
MaelREBOUX Apr 15, 2021
ccc6e64
proprietenonbatiesufexo
MaelREBOUX Apr 15, 2021
78903a1
HabitationDetails
MaelREBOUX Apr 15, 2021
0dcf5c8
lot
MaelREBOUX Apr 15, 2021
38a8169
uf_parcelle
MaelREBOUX Apr 15, 2021
a075293
Création des vues matérialisées (FIN)
MaelREBOUX Apr 15, 2021
212a262
réparation boulette
MaelREBOUX Apr 15, 2021
f879242
COMMENTS
MaelREBOUX Apr 15, 2021
349f640
modif sur vue proprietaire
MaelREBOUX Apr 15, 2021
65b6772
normalisation nom de naissance
MaelREBOUX Apr 15, 2021
bc37ca6
Update .gitignore
MaelREBOUX Apr 15, 2021
4302a42
Tables demandes info foncière
MaelREBOUX Apr 15, 2021
7c7599a
Create README.md
MaelREBOUX Apr 15, 2021
daed849
drop view : modification
MaelREBOUX Apr 15, 2021
1732d43
script pour REFRESH MATERIALIZED VIEW
MaelREBOUX Apr 15, 2021
432831b
correction suite revue de code de jusabatier
MaelREBOUX Jul 6, 2021
54505a0
groupe_autorisation
MaelREBOUX Jul 6, 2021
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@

database/config.sh

.DS_Store
docs/_build/
docs/rsync.bash
cadastrapp/target/*
addons/cadastrapp/js/build/cadastrapp.js
database/test.sh
66 changes: 66 additions & 0 deletions database/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
# Alimentation de la base de données de cadastrapp

Ceci est la documentation des traitements qui mettent à jour la base de données applicative de cadastrapp.


## Principe de fonctionnement

Avant de configurer et jouer ce script, vous devez disposez d'une base de données PostgreSQL / PostGIS contenant des données cadastrales créées en utilisant le greffon **QGIS [cadastre](https://plugins.qgis.org/plugins/cadastre/)**

Cette base de données sera lue par le script qui va créer les tables et **[les vues matérialisées](https://www.postgresql.org/docs/current/sql-creatematerializedview.html)** dont cadastrapp a besoin pour fonctionner.

Le fichier de configuration du script vous permet de définir si les données cadastre QGIS sont dans la même base de données que les données cadastrapp ou pas, sur le même serveur ou pas.

L'utilisation des vues matérialisées permet de gagner du temps lors de la mise de vos données car un simple REFRESH ```MATERIALIZED VIEW table_name``` suffit à relire la base de données source.


## Prérequis

### Versions PostgreSQL et PostGIS

* un système linux type Debian 9 + ou Ubuntu 16+
* PostgreSQL > 9.6
* PostGIS > 2.1 mais < 3.0


### Si toutes les données sont dans la même base de données

C'est le cas le plus simple.

Dans ce cas il faut 2 schémas. Exemples :
* `cadastre_gis` : il contiendra les données cadastre produites par le plugin cadastre de QGIS
* `cadastrapp` : il contiendra les données applicatives pour cadastrapp et créées par notre script


### Si les données sont dans 2 bases de données distinctes

Dans ce cas on aura 2 bases de données différentes (sur la même machine ou pas) et donc 2 schémas différents. Exemples :
* `base_1.cadastre_gis` : il contiendra les données cadastre produites par le plugin cadastre de QGIS
* `base_2.cadastrapp` : il contiendra les données applicatives pour cadastrapp et créées par notre script

La base de données cible qui contiendra les données de cadastrapp devra comporter l'extension **[dblink](http://www.postgresql.org/docs/current//dblink.html)**.


## Configuration du script

Sous linux :
* aller dans le répertoire `database`
* dupliquer le fichier `config_sample.sh`
* le renommer en `config.sh`
* l'ouvrir et compléter les informations de connection aux bases de données
* si les données cadastre QGIS et cadastrapp sont dans la même base de données, laisser `uniqueDB=True` sinon mettre `uniqueDB=False`


## Utilisation du script

Sous linux :
* aller dans le répertoire `database`
* exécuter le script `cadastrapp_load_data.sh`


## Mise à jour des données

Sous linux :
* aller dans le répertoire `database`
* exécuter le script `cadastrapp_update_data.sh`

97 changes: 97 additions & 0 deletions database/cadastrapp_load_data.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,97 @@
#! /bin/bash


clear
git_version=$(git rev-parse HEAD)

echo "--------------------------------------------------------------"
echo " Cadastrapp : script de chargement des données"
echo "--------------------------------------------------------------"
echo ""
echo " version : $git_version"
echo ""
echo "--------------------------------------------------------------"
echo " Lecture du fichier de configuration"
echo "--------------------------------------------------------------"
echo ""

# lecture du fichier de configuration des connexions
. config.sh

if [ "$uniqueDB" = True ] ; then
echo " 1 seule base de données sera utilisée : $cadastrappDBName sur la machine $cadastrappDBHost"
echo " schéma des données cadastre QGIS : $qgisDBSchema"
echo " schéma des données cadastrapp : $cadastrappDBSchema"
elif [ "$uniqueDB" = False ] ; then
echo " 2 bases de données seront utilisées"
echo " host > db > schema"
echo " source QGIS : $qgisDBHost > $qgisDBName > $qgisDBSchema"
echo " cible cadastrapp : $cadastrappDBHost > $cadastrappDBName > $cadastrappDBSchema"
else
echo " pb de configuration : stop"
exit 1
fi

echo ""
read -p " Si ces infos sont exactes : appuyer sur la touche [Entrée] sinon faire ctrl + C pour arrêter."
echo ""


#
# cette fonction permet de remplacer les infos de connection
# avant exécution
#
replaceAndLaunch (){

if [ -z "$1" ] || [ ! -e $1 ] ; then
echo "Le fichier SQL $1 n'existe pas."
exit 1
else
echo " Exécution du fichier : $1"
fi

cat $1 | sed "{
s/#schema_cadastrapp/$cadastrappDBSchema/g
s/#user_cadastrapp/$cadastrappDBUser/g
s/#DBHost_qgis/$qgisDBHost/g
s/#DBPort_qgis/$qgisDBPort/g
s/#DBName_qgis/$qgisDBName/g
s/#DBSchema_qgis/$qgisDBSchema/g
s/#DBUser_qgis/$qgisDBUser/g
s/#DBpasswd_qgis/$qgisDBPassword/g
}" |\
PGPASSWORD=$cadastrappDBPassword psql -h $cadastrappDBHost -p $cadastrappDBPort -d $cadastrappDBName -U $cadastrappDBUser

}


# test de connection aux bases de données
# notamment que cadastrappDBUser puisse lire dans qgisDBSchema
# TODO

# on purge la BD cadastrapp existante
. purge_db.sh
#read -p " pause pour vérifier que la BD est bien vide"

# on recrée les tables
. create_tables.sh

# on remplit les tables
# les tables sont remplies à l'étape d'avant

# on recrée les vues
. create_views.sh

# on applique les commentaires
. create_comments.sh

# traitement à part pour les tables d'information foncière
. tables_request.sh

# on fait un bilan
# TODO

echo ""
echo "--------------------------------------------------------------"
echo " FIN "
echo "--------------------------------------------------------------"
82 changes: 82 additions & 0 deletions database/cadastrapp_update_data.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
#! /bin/bash


clear
git_version=$(git rev-parse HEAD)

echo "--------------------------------------------------------------"
echo " Cadastrapp : script de mise à jour des données"
echo "--------------------------------------------------------------"
echo ""
echo " version : $git_version"
echo ""
echo "--------------------------------------------------------------"
echo " Lecture du fichier de configuration"
echo "--------------------------------------------------------------"
echo ""

# lecture du fichier de configuration des connexions
. config.sh

if [ "$uniqueDB" = True ] ; then
echo " 1 seule base de données sera utilisée : $cadastrappDBName sur la machine $cadastrappDBHost"
echo " schéma des données cadastre QGIS : $qgisDBSchema"
echo " schéma des données cadastrapp : $cadastrappDBSchema"
elif [ "$uniqueDB" = False ] ; then
echo " 2 bases de données seront utilisées"
echo " host > db > schema"
echo " source QGIS : $qgisDBHost > $qgisDBName > $qgisDBSchema"
echo " cible cadastrapp : $cadastrappDBHost > $cadastrappDBName > $cadastrappDBSchema"
else
echo " pb de configuration : stop"
exit 1
fi

echo ""
read -p " Si ces infos sont exactes : appuyer sur la touche [Entrée] sinon faire ctrl + C pour arrêter."
echo ""


#
# cette fonction permet de remplacer les infos de connection
# avant exécution
#
replaceAndLaunch (){

if [ -z "$1" ] || [ ! -e $1 ] ; then
echo "Le fichier SQL $1 n'existe pas."
exit 1
else
echo " Exécution du fichier : $1"
fi

cat $1 | sed "{
s/#schema_cadastrapp/$cadastrappDBSchema/g
s/#user_cadastrapp/$cadastrappDBUser/g
s/#DBHost_qgis/$qgisDBHost/g
s/#DBPort_qgis/$qgisDBPort/g
s/#DBName_qgis/$qgisDBName/g
s/#DBSchema_qgis/$qgisDBSchema/g
s/#DBUser_qgis/$qgisDBUser/g
s/#DBpasswd_qgis/$qgisDBPassword/g
}" |\
PGPASSWORD=$cadastrappDBPassword psql -h $cadastrappDBHost -p $cadastrappDBPort -d $cadastrappDBName -U $cadastrappDBUser

}


# test de connection aux bases de données
# notamment que cadastrappDBUser puisse lire dans qgisDBSchema
# TODO

# on met à jour les vues matérialisées
replaceAndLaunch sql/vues/_update.sql


# on fait un bilan
# TODO

echo ""
echo "--------------------------------------------------------------"
echo " FIN "
echo "--------------------------------------------------------------"
25 changes: 25 additions & 0 deletions database/config_sample.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
#! /bin/bash

# fichier de configuration des infos de connexions
# aux bases de données

# BD cadastre QGIS (lecture)
qgisDBHost=localhost
qgisDBPort=5432
qgisDBName=bdu
qgisDBSchema=cadastre_qgis
qgisDBUser=cadastre_qgis_user
qgisDBPassword=cadastre_qgis_mdp

# BD cadastrapp (écriture)
cadastrappDBHost=localhost
cadastrappDBPort=5432
cadastrappDBName=georchestra
cadastrappDBSchema=cadastrapp
cadastrappDBUser=cadastrapp_user
cadastrappDBPassword=cadastrapp_mdp

# le schéma cadastrapp et le schéma cadastre_qgis sont dans la même base de données
# True / False
uniqueDB=True

26 changes: 26 additions & 0 deletions database/create_comments.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
#! /bin/bash

# ce script va créer les commentaires sur les tables quand il en faut


echo "--------------------------------------------------------------"
echo " Création des commentaires sur les tables et les vues"
echo "--------------------------------------------------------------"
echo ""

# Création des commentaires

replaceAndLaunch sql/comments/Commune.sql
replaceAndLaunch sql/comments/Section.sql
replaceAndLaunch sql/comments/Parcelle.sql
replaceAndLaunch sql/comments/Proprietaire.sql
replaceAndLaunch sql/comments/CoProprieteParcelle.sql
replaceAndLaunch sql/comments/ProprietaireParcelle.sql
replaceAndLaunch sql/comments/ProprieteBatie.sql
replaceAndLaunch sql/comments/ProprieteNonBatie.sql
replaceAndLaunch sql/comments/ProprieteNonBatieSufExo.sql
replaceAndLaunch sql/comments/HabitationDetails.sql
replaceAndLaunch sql/comments/Lot.sql
replaceAndLaunch sql/comments/uf_parcelle.sql

echo " Fait"
25 changes: 25 additions & 0 deletions database/create_tables.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
#! /bin/bash

# ce script va créer les tables


echo "--------------------------------------------------------------"
echo " Création des tables"
echo "--------------------------------------------------------------"
echo ""

# Création des tables

replaceAndLaunch sql/tables/prop_ccocac.sql
replaceAndLaunch sql/tables/prop_ccocac_simple.sql
replaceAndLaunch sql/tables/prop_ccodem.sql
replaceAndLaunch sql/tables/prop_ccodro.sql
replaceAndLaunch sql/tables/prop_ccoqua.sql
replaceAndLaunch sql/tables/prop_ccogrm.sql
replaceAndLaunch sql/tables/prop_dnatpr.sql
replaceAndLaunch sql/tables/prop_dmatto.sql
replaceAndLaunch sql/tables/prop_dmatgm.sql
replaceAndLaunch sql/tables/prop_type_filiation.sql
replaceAndLaunch sql/tables/prop_bati_detent.sql

echo " Fait"
55 changes: 55 additions & 0 deletions database/create_views.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
#! /bin/bash

# ce script va créer les vues matérialisées



echo "--------------------------------------------------------------"
echo " Création des vues matérialisées"
echo "--------------------------------------------------------------"
echo ""

if [ "$uniqueDB" = True ] ; then

replaceAndLaunch sql/vues/commune.sql
MaelREBOUX marked this conversation as resolved.
Show resolved Hide resolved
replaceAndLaunch sql/vues/Section.sql
replaceAndLaunch sql/vues/Parcelle.sql
replaceAndLaunch sql/vues/Proprietaire.sql
replaceAndLaunch sql/vues/CoProprieteParcelle.sql
replaceAndLaunch sql/vues/ProprietaireParcelle.sql
replaceAndLaunch sql/vues/ProprieteBatie.sql
replaceAndLaunch sql/vues/ProprieteNonBatie.sql
replaceAndLaunch sql/vues/ProprieteNonBatieSufExo.sql
replaceAndLaunch sql/vues/HabitationDetails.sql
replaceAndLaunch sql/vues/Lot.sql
replaceAndLaunch sql/vues/uf_parcelle.sql

elif [ "$uniqueDB" = False ] ; then

replaceAndLaunch sql/vues_dblink/commune.sql
MaelREBOUX marked this conversation as resolved.
Show resolved Hide resolved
replaceAndLaunch sql/vues_dblink/Section.sql
replaceAndLaunch sql/vues_dblink/Parcelle.sql
replaceAndLaunch sql/vues_dblink/Proprietaire.sql
replaceAndLaunch sql/vues_dblink/CoProprieteParcelle.sql
replaceAndLaunch sql/vues_dblink/ProprietaireParcelle.sql
replaceAndLaunch sql/vues_dblink/ProprieteBatie.sql
replaceAndLaunch sql/vues_dblink/ProprieteNonBatie.sql
replaceAndLaunch sql/vues_dblink/ProprieteNonBatieSufExo.sql
replaceAndLaunch sql/vues_dblink/HabitationDetails.sql
replaceAndLaunch sql/vues_dblink/Lot.sql
replaceAndLaunch sql/vues_dblink/uf_parcelle.sql

fi

echo " Fait"


echo "--------------------------------------------------------------"
echo " Création des indexes sur les vues matérialisées"
echo "--------------------------------------------------------------"
echo ""

replaceAndLaunch sql/indexes/indexes_vues_materialisees.sql

echo " Fait"

Loading