Tidak dapat memuat tabel dipartisi PostGIS di QGIS

8

Saya mempartisi tabel (lebih dari 13 juta data titik geografis) di database PostgreSQL saya dengan pernyataan ini:

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

Dan untuk setiap tabel anak saya membuat kunci utama dan indeks seperti dalam contoh ini.

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

Sebenarnya, tidak ada masalah untuk memuat tabel anak dalam proyek QGIS saya, tetapi saya tidak dapat memuat tabel induk 'data.data_fusion'. Saya mendapat pesan kesalahan berikut:

  • Menggunakan panel browser:

    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
  • Menggunakan menu add layer

    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

Konsol PostgreSQL menunjukkan masalah pk (tidak ada pk pada tabel induk):

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

Apakah ada cara untuk memuat tabel partisi orang tua saya ke QGIS (v 2.18.14)?

lpofredc
sumber

Jawaban:

6

Sepertinya partisi PostgreSQL asli tidak didukung di QGIS 2.x. Ini harus berfungsi seperti yang diharapkan di QGIS 3. Lihat tiket terkait dan komit .

Sebagai solusinya, Anda bisa membuat tampilan yang hanya SELECT *dari tabel master Anda dan membawanya ke QGIS.

dbaston
sumber
Terima kasih! itu berhasil untuk saya. Bahkan dengan keamanan level baris diaktifkan di atas meja! Sebenarnya, saya tidak bisa bermigrasi ke versi qgis yang lebih baru, ada masalah koneksi ke postgresql dengan protokol ssl aman, seperti disebutkan dalam masalah ini: issues.qgis.org/issues/17672
lpofredc