No se puede cargar la tabla particionada PostGIS en QGIS

8

Particioné una tabla (más de 13 millones de datos de puntos geográficos) en mi base de datos PostgreSQL con esta declaración:

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);

Y para cada tabla secundaria, creé claves principales e índices como en este ejemplo.

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);

En realidad, no hay ningún problema para cargar tablas secundarias en mi proyecto QGIS, pero no puedo cargar la tabla principal 'data.data_fusion'. Tengo los siguientes mensajes de error:

  • Usando el panel del navegador:

    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
  • Usar el menú Agregar capa

    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

La consola de PostgreSQL indica un problema de pk (no hay pk en la tabla principal):

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

¿Hay alguna manera de cargar mi tabla particionada principal en QGIS (v 2.18.14)?

lpofredc
fuente

Respuestas:

6

Parece que la partición nativa de PostgreSQL no es compatible con QGIS 2.x. Debería funcionar como se espera en QGIS 3. Ver el ticket relacionado y confirmar .

Como solución alternativa, puede crear una vista que sea solo SELECT *de su tabla maestra y llevarla a QGIS.

dbaston
fuente
¡Gracias! Eso funcionó para mí. ¡Incluso con seguridad de nivel de fila habilitada en la mesa! En realidad, no puedo migrar a la versión más reciente de qgis, hay un problema de conexión a postgresql con protocolo SSL seguro, como se menciona en este número: issues.qgis.org/issues/17672
lpofredc