Skip to main content

Import tool from GeoNature to a PostgreSQL database through Export module API (client side)

Project description

GN2PG Client

https://www.python.org/ https://www.postgresql.org/ https://python-poetry.org/ https://github.com/psf/black https://opensource.org/licenses/AGPL-3.0

This project provides an import data from GeoNature instances to a PostgreSQL database (client side). Widely inspired from ClientApiVN

[!WARNING] The minimum version of the source GeoNature instance required for the incremental update must be a version 2.12.0

Project logo

Project Setup

GN2PG Client can be installed by running pip. It requires Python 3.9 or above to run.

pip install gn2pg-client

Issues

Please report any bugs or requests that you have using the GitHub issue tracker!

HowTo

Help

gn2pg_cli --help

Init config file

This command init a TOML config file within ~/.gn2pg hidden directory (in user HOME directory), named as you want. PLEASE DO NOT SPECIFY PATH!

gn2pg_cli config --init <myconfigfile>

Config file is structured as this. [[source]] block can be duplicate as many as needed (one block for each source).

The data_type value on each source is used to characterize the type of data. This value is used to identify which triggers to be triggered when inserting, updating or deleting data. Current provided trigger configs are:

  • synthese_with_cd_nomenclature which provide triggers to insert basically data on synthese and generate basic metadatas (acquisition framework and datasets). Source query sample is provided in file geonature_export_sinp_with_cd_nomenclature.sql
  • synthese_with_metadata which provide triggers to insert data in synthese and populate most of the metadata data (acquisition frameworks, datasets, actors such as organisms and roles, territories, etc.). Source query sample is provided in file geonature_export_sinp_with_metadata.sql
# GN2PG configuration file

# Local db configuration
[db]
db_host = "localhost"
db_port = 5432
db_user = "<dbUser>"
db_password = "<dbPassword>"
db_name = "<dbName>"
db_schema_import = "schema"
    # Additional connection options (optional)
    [db.db_querystring]
    sslmode = "prefer"


# Source configuration,
# Ducplicate this block for each source (1 source = 1 export)
[[source]]
# Source name, will be use to tag stored data in import table
name = "Source1"
# GeoNature source login
user_name = "<monuser>"
# GeoNature source password
user_password = "<monPwd>"
# GeoNature source URL
url = "<http://geonature1/>"
# GeoNature source Export id
export_id = 1
# Data type is facultative. By default the value is 'synthese'. Therefore, triggers from to_gnsynthese.sql are not activated.
# If you want to insert your data into a GeoNature database please choose either 'synthese_with_cd_nomenclature' or 'synthese_with_metadata'.
# If not, delete the line.
data_type = "synthese_with_cd_nomenclature"


[[source]]
# Source configuration
name = "Source2"
user_name = "<monuser>"
user_password = "<monPwd>"
url = "<http://geonature2/>"
export_id = 1
data_type = "synthese_with_cd_nomenclature"

[!TIP] You can add variable in source block enable = false to disable a source

InitDB Schema and tables

To create json tables where datas will be stored, run :

gn2pg_cli db --json-tables-create <myconfigfile>

Full download

To download all datas from API, run :

gn2pg_cli download --full <myconfigfile>

Incremental download

To update data since last download, run :

gn2pg_cli download --update <myconfigfile>

To automate the launching of updates, you can write the cron task using the following command, for example every 30 minutes.

*/30 * * * * /usr/bin/env bash -c "source <path to python environment>/bin/activate && gn2pg_cli download --update <myconfigfile>" > /dev/null 2>&1

Debug mode

Debug mode can be activated using --verbose CLI argument

Logs

Log files are stored in $HOME/.gn2pg/log directory.

Import datas into GeoNature database

Default script to auto populate GeoNature is called "to_gnsynthese".

gn2pg_cli db --custom-script to_gnsynthese <myconfigfile>

[!TIP] You can also replacing synthese script by your own scripts, using file path instead of to_gnsynthese.

Dashboard

A simple web dashboard can be run following dashboard docs.

Dashboard_Home

Dashboard_gn2pg_downloag_log

Contributing

All devs must be done in forks (see GitHub doc).

Pull requests must be pulled to dev branch.

Install project and development requirements (require poetry):

poetry install --with=docs --all-extras
poetry run pre-commit install

Make your devs and pull requests.

Test gn2pg_cli in dev mode by running this command:

poetry run gn2pg_cli <options>

Licence

GNU AGPLv3

Team

@lpofredc (LPO Auvergne-Rhône-Alpes), lead developer



With the financial support of the DREAL Auvergne-Rhône-Alpes and the Office français de la biodiversité.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

gn2pg_client-1.9.1.tar.gz (85.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

gn2pg_client-1.9.1-py3-none-any.whl (94.1 kB view details)

Uploaded Python 3

File details

Details for the file gn2pg_client-1.9.1.tar.gz.

File metadata

  • Download URL: gn2pg_client-1.9.1.tar.gz
  • Upload date:
  • Size: 85.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.1.3 CPython/3.11.7 Linux/6.11.0-1015-azure

File hashes

Hashes for gn2pg_client-1.9.1.tar.gz
Algorithm Hash digest
SHA256 1db84a1cda79c92a814e42edccfb60a6f68a4737c7341c849ecff781ff36bfcb
MD5 211e076fe240a8f19d9c9102bda42556
BLAKE2b-256 68128f960952af4dd25a097ae7a680dba4c6636a52bf13487c2aa1af917c5881

See more details on using hashes here.

File details

Details for the file gn2pg_client-1.9.1-py3-none-any.whl.

File metadata

  • Download URL: gn2pg_client-1.9.1-py3-none-any.whl
  • Upload date:
  • Size: 94.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.1.3 CPython/3.11.7 Linux/6.11.0-1015-azure

File hashes

Hashes for gn2pg_client-1.9.1-py3-none-any.whl
Algorithm Hash digest
SHA256 2a4ebf9b572d95ed3687cac4b6914afc96707795e099ad0f767891a6d6feba9a
MD5 c0ba03da9758f84cf4056506eddd1e26
BLAKE2b-256 a4a8de393128a2a5b9e4bcb9bc21ddcce145a4704c4ba9e6a0fba475cfa6fb7b

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page