2.3. Initialisation de la base de données

Vous pouvez utiliser pgAdmin afin d’accéder et gérer le serveur de base de données.

Note

En cliquant sur ce lien vous apprendrez à install pgAdmin

2.3.1. Procédure

Dans pgAdmin 4

  • Se connecter au serveur de la base de données

  • Create a new database with UTF8 encoding (e.g. qgep_prod).

2.3.1.1. Restaurer le modèle de données démo

Restaurer le dernier modèle de données qui inclut également les données de démonstration:

Back in pgAdmin :

  • clic droit sur la base “qgep_prod”

    • Cliquer sur Restore

    • Charger votre téléchargement de qgep_vx.y.z_structure_and_demo_data.backup

    ../_images/demodata-restore.jpg
    • Cliquer dans l’onglet “Restore Options” et cocher ces options

    ../_images/demodata-restore_options.jpg
    • Cliquer sur Restore

    • Check whether in Message window Restoring backup on the server is successfully completed.

Note

If the Restore is failed and the detail reads something like « pg_restore: [archiver] unsupported version (1.13) in file header » or in German « pg_restore: [Archivierer] nicht unterstützte Version (1.13) im Dateikopf » try updating your PostgreSQL, see https://stackoverflow.com/questions/49064209/getting-archiver-unsupported-version-1-13-in-file-header-when-running-pg-r

  • Fermer la fenêtre restauration.

  • Clic-droit sur la base de données et cliquer sur Rafraîchir

../_images/demodata-refresh.jpg
  • Propably you want to rename the database: Right click the database, click Properties… and rename the database.

There are now 7 schemas in the database (public, qgep_import, qgep_network, qgep_swmm, qgep_od, qgep_sys, qgep_vl)

2.3.1.2. Create minimal roles and access

Note

The QGEP roles are defined in the https://github.com/QGEP/datamodel/blob/master/12_0_roles.sql (per cluster) and https://github.com/QGEP/datamodel/blob/master/12_1_roles.sql (per database) files. It is recommended to use these when using QGEP in a production environment.

Copy paste and run the two .sql one after the other in the query editor of pgAdmin4 (Tools > Query Tool).

2.3.1.3. Modèle de données vide

Vous avez également l’option de restaurer le dernier modèle de données vide (sans données de démonstration)

Note

If you run the sql in a Requêtes SQL Window, you will get an error. You have to use a BAT-File.

  • Use a BAT-File like that, to create the database, the extensions and the schemas with valuelist (replace x.y.z with your version):

    @echo off
    
    set filename="qgep_vx.y.z_structure_with_value_lists.sql"
    
    if not exist %filename% (
       echo "File %filename% does not exist. Please download the latest datamodel from https://github.com/QGEP/datamodel/releases (structure_with_value_lists.sql) and adjust filename in this batch file."
       PAUSE
       exit -1
    )
    
    set /p db="Please enter the database name? (e.g. qgep_community) "
    set /p password="Please enter the password for user postgres? "
    
    set port=5432
    set PATH=%PATH%;C:\Program Files\PostgreSQL\12\bin
    set PGPASSWORD=%password%
    
    createdb -U postgres -p %port% %db%
    
    psql -U postgres -h localhost -p %port% -d %db% -f %filename%
    psql -U postgres -h localhost -p %port% -d %db% -c "GRANT USAGE ON SCHEMA public TO ""qgep"""
    psql -U postgres -h localhost -p %port% -d %db% -c "GRANT USAGE ON SCHEMA qgep_vl TO ""qgep"""
    psql -U postgres -h localhost -p %port% -d %db% -c "GRANT USAGE ON SCHEMA qgep_od TO ""qgep"""
    psql -U postgres -h localhost -p %port% -d %db% -c "GRANT USAGE ON SCHEMA qgep_import TO ""qgep"""
    psql -U postgres -h localhost -p %port% -d %db% -c "GRANT USAGE ON SCHEMA qgep_swmm TO ""qgep"""
    psql -U postgres -h localhost -p %port% -d %db% -c "GRANT USAGE ON SCHEMA qgep_sys TO ""qgep"""
    
    psql -U postgres -h localhost -p %port% -d %db% -c "GRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA qgep_od TO ""qgep""";
    psql -U postgres -h localhost -p %port% -d %db% -c "GRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA qgep_swmm TO ""qgep""";
    psql -U postgres -h localhost -p %port% -d %db% -c "GRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA qgep_import TO ""qgep""";
    psql -U postgres -h localhost -p %port% -d %db% -c "GRANT SELECT ON ALL TABLES IN SCHEMA qgep_vl TO ""qgep""";
    psql -U postgres -h localhost -p %port% -d %db% -c "GRANT SELECT ON ALL TABLES IN SCHEMA qgep_sys TO ""qgep""";
    psql -U postgres -h localhost -p %port% -d %db% -c "GRANT SELECT ON ALL TABLES IN SCHEMA public TO ""qgep"""
    
    psql -U postgres -h localhost -p %port% -d %db% -c "GRANT USAGE ON ALL SEQUENCES IN SCHEMA qgep_od TO ""qgep"""
    
    psql -U postgres -h localhost -p %port% -d %db% -c "REFRESH MATERIALIZED VIEW qgep_od.vw_network_node"
    psql -U postgres -h localhost -p %port% -d %db% -c "REFRESH MATERIALIZED VIEW qgep_od.vw_network_segment"
    
    PAUSE
    

Note

Vous êtes libre de choisir le nom de la base de données.

  • Update privileges for the qgep_od, qgep_sys, qgep_vl, qgep_network, qgep_import, qgep_swmm schema as described in the chapter Create minimal roles and access.

2.3.1.4. Générer le modèle de données sous Linux

Vous pouvez également générer le modèle de données sous Linux.

  • Télécharger le modèle de données:

    git clone https://github.com/QGEP/datamodel
    cd datamodel
    
  • Setup the pg_service.conf file and add the pg_qgep service as in the Linux/macOS pg_service section.

  • Créer la base de données

    psql -U postgres -c 'CREATE DATABASE qgep;'
    
  • Lancer le script de generation:

    ./scripts/db_setup.sh
    

Si vous souhaitez utiliser un SRID différend, vous devrez utiliser l’option -s. Par exemple, lancer ./scripts/db_setup.sh -s 2056 pour 2056 SRID.

Si vous avez déjà un modèle de données et désirez forcer la régénération du modèle, vous pouvez également utiliser l’option -f: ./scripts/db_setup.sh -f.

Vous pouvez utiliser l’option -r pour ajouter des rôles (qgep_viewer, qgep_user, qgep_manager, qgep_sysadmin).

  • Viewer: Peut consulter les tables et les vues.

  • Utilisateur: Peut éditer les données

  • Gestionnaire: Peut éditer les données et les listes de valeurs.

  • Admin: Administrateur base de données