PostgreSQL-Tabellen in verschiedenen Schemata

Aus kvwmap
Wechseln zu: Navigation, Suche

Um die Daten in der PostreSQL-DB besser strukturieren zu können, kann man die Tabellen auf verschiedene Schemata aufteilen. Ein neues Schema anzulegen, ist sehr einfach. Im PgAdmin3 geht dies durch Rechtsklick auf "Schemata" und dann "Neues Schema...". Hier kann man einen Schemanamen und einen Eigentümer vergeben. Oder per SQL :

CREATE SCHEMA schema1 AUTHORIZATION kvwmap;

In diesem Fall wird ein Schema mit dem Namen "schema1" angelegt, welches dem Nutzer "kvwmap" gehört.

Nachdem das Schema angelegt wurde, sieht man im PgAdmin3, dass es komplett leer ist. D.h. es gibt keine Funktionen, Tabellen, Typen oder sonst irgendwas. Trotzdem kann man in diesem Schema Tabellen mit Geometriespalten anlegen. Man kann dies entweder direkt im PgAdmin3 tun oder man benutzt dafür ein SQL-Statement, z.B. von einem shp2pgsql-Aufruf. Damit die Tabelle auch im richtigen Schema erzeugt wird, muss dem SQL-Statement folgende Zeile vorangestellt werden:

SET search_path = schema1, public;

Dieser Befehlt setzt die Suchreihenfolge für alle weiteren SQL-Kommandos. D.h. es wird zuerst das Schema "schema1" verwendet und dann das "public"-Schema.

Ist die Tabelle im neuen Schema "schema1" angelegt worden, kann nun ein Layer definiert werden, der auf sie zugreift. Dafür sind in den Layereinstellungen 2 zusätzliche Einträge erforderlich:

  • Im Data-Statement muss der Schemaname vor den Tabellennamen gesetzt werden: "schema1.tabelle1"
  • Im Feld Schema muss der Schemaname eingetragen werden: "schema1"