Không thể tải bảng phân vùng PostGIS trong QGIS


8

Tôi đã phân vùng một bảng (hơn 13 triệu dữ liệu điểm địa lý) trong cơ sở dữ liệu PostgreQuery của tôi với tuyên bố này:

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

Và với mỗi bảng con tôi đã tạo khóa chính và các chỉ mục như trong ví dụ này.

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

Trên thực tế, không có vấn đề gì khi tải các bảng con trong dự án QGIS của tôi, nhưng tôi không thể tải bảng cha 'data.data_fusion'. Tôi đã nhận được các thông báo lỗi sau:

  • Sử dụng bảng điều khiển trình duyệt:

    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
  • Sử dụng thêm menu lớp

    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

Bảng điều khiển PostgreSQL chỉ ra sự cố pk (không có pk trên bảng cha):

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

Có cách nào để tải bảng phân vùng cha mẹ của tôi vào QGIS (v 2.18,14) không?

Câu trả lời:


6

Có vẻ như phân vùng PostgreSQL tự nhiên không được hỗ trợ trong QGIS 2.x. Nó sẽ hoạt động như mong đợi trong QGIS 3. Xem cam kết liên quan .

Như một giải pháp thay thế, bạn có thể tạo một chế độ xem chỉ SELECT *từ một bảng chính của bạn và đưa nó vào QGIS.


Cảm ơn! Điều đó đã làm việc cho tôi. Ngay cả bảo mật cấp hàng được kích hoạt trên bàn! Trên thực tế, tôi không thể di chuyển lên phiên bản mới hơn của QGIS, có một kết nối vấn đề để postgresql với giao thức ssl an toàn như mentionned trong vấn đề này: issues.qgis.org/issues/17672
lpofredc
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.