1. Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm
    Information ausblenden

Migration MariaDB > Postgres+PostGIS = fehlende Geometry Eigenschaft

Dieses Thema im Forum "PostgreSQL" wurde erstellt von pg_newbie2020, 13 Februar 2020 um 09:15 Uhr.

  1. pg_newbie2020

    pg_newbie2020 Neuer Benutzer

    Hallo Zusammen,

    ich habe eine "alte" DB von MariaDB nach PG "umgezogen" - Tabellen, Spalten und Inhalte sind auch alle da.

    Ich habe folgende Extensions installiert:

    CREATE EXTENSION postgis;
    CREATE EXTENSION postgis_topology;
    CREATE EXTENSION postgis_sfcgal;
    CREATE EXTENSION fuzzystrmatch;
    CREATE EXTENSION address_standardizer;
    CREATE EXTENSION address_standardizer_data_us;
    CREATE EXTENSION postgis_tiger_geocoder;
    CREATE EXTENSION pgrouting;
    CREATE EXTENSION ogr_fdw;
    CREATE EXTENSION pointcloud;
    CREATE EXTENSION pointcloud_postgis;
    CREATE EXTENSION postgis_raster;

    Die Abfrage mit:

    select extname from pg_extension;

    zeigt mir auch an, dass die folgenden Extensions installiert sind:

    "plpgsql"
    "adminpack"
    "postgis"
    "postgis_topology"
    "postgis_sfcgal"
    "fuzzystrmatch"
    "address_standardizer"
    "address_standardizer_data_us"
    "postgis_tiger_geocoder"
    "pgrouting"
    "ogr_fdw"

    Ich habe in der DB eine Tabelle die zwei Spalten mit Geodaten enthält:

    laengengrad (8.964395615000000)
    breitengrad (49.000550000000000)

    Allerdings haben diese Spalten die Eigenschaft (Data Type)

    numeric

    Dadurch werden diese Spalten in der GIS Software (Cadenza) nicht als Geo Daten erkannt.

    Was muss ich machen um diese Spalten entsprechend anzupassen?

    Danke

    Falk
     
  2. akretschmer

    akretschmer Datenbank-Guru

    Hi,

    bitte nicht ein und dieselbe Frage mehrfach in verschiedenen Foren stellen, okay? Das verstößt gegen die Forenregeln.

    Code:
    test=*# create table falk(l numeric, b numeric, g geometry);
    CREATE TABLE
    test=*# insert into falk values (8.964395615000000,49.000550000000000,NULL);
    INSERT 0 1
    test=*# update falk set g = ST_GeomFromText('POINT(' || l::text || ' ' || b::text || ')');
    UPDATE 1
    test=*# select * from falk ;
             l         |         b          |                     g                     
    -------------------+--------------------+--------------------------------------------
     8.964395615000000 | 49.000550000000000 | 010100000060A91543C5ED2140A301BC0512804840
    (1 row)
    
     
  3. pg_newbie2020

    pg_newbie2020 Neuer Benutzer

    Hallo,
    danke für die Info und Belehrung.

    Ich habe jetzt noch folgendes (Verständnis)-Problem.

    In der Tabelle hat es ca. 45 Spalten. D.h. wenn ich Deine Lösung anwende - sprich eine neue Tabelle mache - dann fehlt mir ja der Bezug zu den restlichen Daten.

    Grüße

    Falk
     
  4. akretschmer

    akretschmer Datenbank-Guru

    was spricht gegen

    Code:
    create table neue_tabelle as select spalte1, spalte2, ST_GeomFromText(...) from alte_tabelle;
    
    ?
     
  5. castorp

    castorp Datenbank-Guru

    Oder
    Code:
    alter table bestehende_tabelle add neue_geometrie geometry;
    update bestehende_tabelle
       set neue_geometrie = ST_GeomFromText(...);
     
  6. akretschmer

    akretschmer Datenbank-Guru

    jepp, nur hat er dann die 2 extra-Spalten, die er dann später vielleicht wieder via ALTER TABLE entfernt - und jedesmal die Tabelle neu schreibt, massig WAL und Bloat produziert etc. Viele Wege führen zum Ziel...
     
  7. pg_newbie2020

    pg_newbie2020 Neuer Benutzer


    Danke für die Antwort....

    Jetzt noch eine Anschlussfrage: im Feld G was für ein Wert ist das?
     
  8. akretschmer

    akretschmer Datenbank-Guru

    Das ist eine Geometry von PostGIS.
     
Die Seite wird geladen...

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden