PostGIS partitionierte Tabelle kann nicht in QGIS geladen werden

8

Ich habe eine Tabelle (über 13 Millionen geografische Punktdaten) in meiner PostgreSQL-Datenbank mit folgender Anweisung partitioniert:

CREATE TABLE data.data_fusion (
 id                BIGINT NOT NULL,
 source            TEXT,
 id_source         VARCHAR,
 id_vn             INTEGER,
 taxref_id         INTEGER,
 ...
 geom              GEOMETRY(Point, 2154),
 equipe            VARCHAR,
 exp_excl          BOOLEAN
 )
PARTITION BY LIST (equipe);

Und für jede untergeordnete Tabelle habe ich wie in diesem Beispiel Primärschlüssel und Indizes erstellt.

CREATE TABLE data.data_fusion_lpo07 PARTITION OF data.data_fusion FOR VALUES IN ('lpo07');
ALTER TABLE data.data_fusion_lpo07 ADD PRIMARY KEY (id);
CREATE INDEX ON data.data_fusion_lpo07 (source);
CREATE INDEX ON data.data_fusion_lpo07 (id_vn);
CREATE INDEX ON data.data_fusion_lpo07 (taxref_id);
CREATE INDEX ON data.data_fusion_lpo07 (nom_vern);
CREATE INDEX ON data.data_fusion_lpo07 (nom_sci);
CREATE INDEX ON data.data_fusion_lpo07 USING GIST (geom);
CREATE INDEX ON data.data_fusion_lpo07 (equipe);
CREATE INDEX ON data.data_fusion_lpo07 (code_nidif_oiseau);

Eigentlich gibt es kein Problem beim Laden von untergeordneten Tabellen in mein QGIS-Projekt, aber ich kann die übergeordnete Tabelle 'data.data_fusion' nicht laden. Ich habe die folgenden Fehlermeldungen erhalten:

  • Browser-Panel verwenden:

    Layer is not valid: The layer dbname='dbwork' host=bdd.faura.org port=5432 sslmode=require authcfg=lpoaura srid=2154 type=Point table="data"."data_fusion" (geom) sql= is not a valid layer and can not be added to the map
  • Verwenden des Layer-Menüs hinzufügen

    dbname='dbwork' host=bdd.faura.org port=5432 sslmode=require authcfg=lpoaura key='""' estimatedmetadata=true srid=2154 type=Point table="data"."data_fusion" (geom) sql= is an invalid layer - not loaded

Die PostgreSQL-Konsole weist auf ein pk-Problem hin (kein pk in der übergeordneten Tabelle):

  Unexpected relation type 'p'.
  PostgreSQL layer has no primary key.

Gibt es eine Möglichkeit, meine übergeordnete partitionierte Tabelle in QGIS (Version 2.18.14) zu laden?

lpofredc
quelle

Antworten:

6

Es sieht so aus, als würde die native PostgreSQL-Partitionierung in QGIS 2.x nicht unterstützt. Es sollte wie in QGIS 3 erwartet funktionieren. Siehe zugehöriges Ticket und Commit .

Um dieses Problem zu umgehen, können Sie eine Ansicht erstellen, die nur SELECT *aus Ihrer Mastertabelle stammt, und diese in QGIS integrieren.

dbaston
quelle
Vielen Dank! das hat bei mir funktioniert. Auch wenn die Sicherheit auf Zeilenebene auf dem Tisch aktiviert ist! Eigentlich kann ich nicht auf eine neuere Version von qgis migrieren, es gibt ein Problem mit der Verbindung zu postgresql mit sicherem SSL-Protokoll, wie in dieser Ausgabe erwähnt: issue.qgis.org/issues/17672
lpofredc