2.3. Initialisierung der Datenbank
Für die Konfiguration der Datenbank können sie pgAdmin verwenden.
Bemerkung
Mit diesem Link können sie lernen wie man Installation von pgAdmin benutzt.
2.3.1. Vorgehen
In pgAdmin4
Verbinden Sie sich mit dem Datenbankserver
Erstellen Sie eine neue Datenbank mit UTF8-Kodierung (z. B. „qgep_prod“).
2.3.1.1. Demodaten einrichten
Das aktuelle Datenbank-Schema mit dem Demodatensatz einrichten
Herunterladen der Demodaten * https://github.com/QGEP/datamodel/releases/latest * download qgep_vx.y.z_structure_and_demo_data.backup
Weiter in pgAdmin:
Rechtsklick auf die Datenbank qgep_prod.
‚Restore‘ wählen
Laden sie ihren Download von qgep_vx.y.z_structure_and_demo_data.backup
Klicken Sie den Restore Option-Tab und überprüfen Sie die folgenden Optionen
‚Restore‘ wählen
Kontrollieren sie im Fenster Restoring backup on the server, ob der Abschluss erfolgreich war.
Bemerkung
Wenn die Wiederherstellung nicht funktioniert und unter more details etwas steht wie „pg_restore: [archiver] unsupported version (1.13) in file header“ resp. in Deutsch „pg_restore: [Archivierer] nicht unterstützte Version (1.13) im Dateikopf“ updaten sie PostgreSQL, vgl. https://stackoverflow.com/questions/49064209/getting-archiver-unsupported-version-1-13-in-file-header-when-running-pg-r
Schliessen sie das Wiederherstellungsfenster
Recktsklick auf die Datenbank und ‚Refresh‘ wählen
Vermutlich wollen sie die Datenbank jetzt umbenennen: Rechtsklick auf die Datenbank, klick auf Eigenschaften… und geben sie einen neuen Namen ein.
Es sind jetzt 7 Schemata in der Datenbank vorhanden (public, qgep_import, qgep_network, qgep_swmm, qgep_od, qgep_sys, qgep_vl)
2.3.1.2. Rollen und Zugriffsrechte erstellen
Bemerkung
Die QGEP-Rollen werden in den Dateien https://github.com/QGEP/datamodel/blob/master/12_0_roles.sql (pro Cluster) und https://github.com/QGEP/datamodel/blob/master/12_1_roles.sql (pro Datenbank) definiert. Es wird empfohlen, diese zu verwenden, wenn Sie QGEP in einer Produktionsumgebung einsetzen.
Kopieren Einsetzen und Starten der beiden .sql nacheinander im Query Editor von pgAdmin4 (Tools > Query Tool).
2.3.1.3. Leeres Datenbank-Schema
Es ist auch möglich, ein leeres Datenbank-Schema zu erstellen (ohne Demodatensatz).
Herunterladen das Datenbank-Schema unter https://github.com/QGEP/datamodel/releases/latest, und der Datei qgep_vx.y.z_structure_with_value_lists.sql.
Bemerkung
Wenn dieses SQL in einem SQL Abfrage Fenster gestartet wird, gibt es einen Fehler. Es muss ein BAT-File benutzt werden.
Benutze eine BAT-Datei wie folgt, um die Datenbank, die Erweiterungen und die Schemata mit Wertelisten zu erzeugen (ersetzen sie x.y.z mit ihrer Versionnummer):
@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
Bemerkung
Es kann irgendein Datenbankname verwendet werden.
Die Berechtigungen definieren für die Schemata qgep_od, qgep_sys, qgep_vl, qgep_network, qgep_import, qgep_swmm wie im Kapitel Rollen und Zugriffsrechte erzeugen beschrieben .
2.3.1.4. Erzeugen des Datenmodells unter Linux
Es ist auch unter LINUX möglich das Datenmodell zu erzeugen
Download des Datenmodells
git clone https://github.com/QGEP/datamodel cd datamodel
Anpassen des Konfigurationsfile „pg_service.conf“ und setzen des Service auf „pg_qgep“, siehe „pg_service-linux“
Erzeugen der Datenbank
psql -U postgres -c 'CREATE DATABASE qgep;'
Starten Sie das Skript:
./scripts/db_setup.sh
Wenn Sie eine andere SRID verwenden möchten, dann benutzen Sie die -s
option. Zum Beispiel ./scripts/dbsetup.sh -s 2056
für SRID 2056.
Wenn Sie schon ein Datenmodell haben und dieses erneut erzeugen möchten, dann nutzen Sie die -f` Option: ./scripts/db_setup.sh -f
.
Sie können die -r
Option nutzen, um die folgenden Rollen hinzuzufügen (qgep_viewer
, qgep_user
, qgep_manager
, qgep_sysadmin
).
Viewer: Kann Tabellen und Views anschauen.
User: Kann Daten editieren.
Manager: Kann Daten und Wertebereiche bearbeiten.
Admin: Datenbank Administrator.