legi.py to postgres conversion
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
pgloader
scripts
.dockerignore
.gitignore
Dockerfile-legi
Dockerfile-pgloader
LICENSE
README.md
docker-compose.override.sample.yml
docker-compose.yml
start.sh
update.sh

README.md

legi-postgres experimental

Containers docker pour legilibre/legi.py :

  • télécharges et maintient la base LEGI depuis echanges.dila.gouv.fr (~3Go en tgz)
  • crée un fichier SQLite, normalise, consolide et corrige les sources brutes (~2h sur un MBP pour le premier fichier)
  • convertit via pgloader et expose une base PostgreSQL (~7mins sur un MBP)

Le dossier par défaut de stockage est ./tarballs.

La base LEGI contient le texte intégral consolidé de la législation et de la réglementation nationale soit 73 codes officiels en vigueur consolidés (et les autres 29 abrogés) depuis 1945.

From scratch, le process complet de récupération, consolidation et conversion peut durer jusqu'à 2h. Une fois la base créée, le process de mise à jour quotidien dure environ 10 minutes.

Usage

# créer les containers
docker-compose up -d

# télécharger et mettre à jour la base legilibre LEGI
docker-compose run legi.py /usr/bin/update

# créer une base dans le container postgres
docker-compose exec postgres createdb -U user legi

# lancer la conversion sqlite -> postgres
docker-compose run pgloader pgloader -v /scripts/legi.load

💡 Le script ./start.sh lance toutes ces commandes pour vous.

Mise à jour automatique

Ajouter dans un cron sur la machine hôte avec crontab -e pour mettre à jour la DB périodiquement :

0 7 * * * root /home/user/legi-postgres/update.sh

Serveur PostgreSQL

L'instance PostgreSQL est exposée sur :

  • le port 5444
  • compte master : à définir dans docker-compose.override.yml
  • compte readonly : legi/legi

Maj des données LEGI depuis le FTP DILA

Le script ./update.sh lance cette étape automatiquement.

Sinon :

cd tarballs
wget -m -t0 -nH ftp://echanges.dila.gouv.fr/LEGI

https://explainshell.com/explain?cmd=wget+-m+ftp%3A%2F%2Fechanges.dila.gouv.fr%2FLEGI+-t0+-nH