Kopieren der Datensätze verschiedenen Datenbanken

Hallo,

ich habe eine DB postgis, wo ich eine Tabelle mit

create table tabelle(
id serial PRIMARY KEY,
name TEXT,
coordinates GEOMETRY (POINT, 4326)).

erzeugt habe.

Jetzt muss in die Tabelle “tabelle” die Daten aus einer anderen Tabelle “andre_tabelle” der anderen DB hinzufügen, die folgenden Daten enthält:
“name” auch im Format TEXT
“koordinaten” lat/long im Format numeric

Wie kann ich die Daten am besten in die Tabelle “tabelle” kopieren, um diese danach im QGIS visualisieren zu können?

Grüße
Tamara

ist die andere Tabelle tatsächlich in einer anderen Datenbank? Falls ja, wird es etwas aufwändiger, da Du nicht direkt auf andere DB’s zugreifen kannst. Falls die Tabelle in der selben DB ist:

insert into tabelle(name, coordinates) select name, ST_GeomFromText(…) from andere_tabelle

Das anpassen der ST_GeomFromText überlasse ich Dir zur Übung.

Falls wirklich andere DB? ist das einmalig? Dann am einfachsten die Tabelle via Dump&Restore in diese DB tragen. Auch das ist eine beliebte Übungsaufgabe :wink:


Andreas

Vielen Dank! Es hat mit der ersten Hälfte geklappt. Meine andere_tabelle ist jetzt in der postgis Datenbank.
Jetzt verstehe ich nicht wirklich, wie ich die Koordinaten reinbekommen könnte. So würde es gehen, wenn ich die Koordinaten x und y einfügen würde: ST_GeomFromText(‘POINT(x, y)’, 4326)). Wenn ich aber die Koordinaten von einer anderen Tabelle übernehmen möchte, was sollte ich statt x und y nehmen?

Grüße
Tamara.

Dazu kommt, dass ich keine eindeutige Spalte für lat/long in der andere_tabelle habe. Im JSON (von dem die Tabelle erzeugt wurde) sehen die Koordinaten so aus:
“point”: {
“type”: “Point”,
“coordinates”: [
11.5866363,
48.1742543
]
Einfach eine Liste mit lat und long.

Nun, bissl basteln… mal als Anregung. Du hast:

test=*# select * from tomalkis ;
                                  t                                  
---------------------------------------------------------------------
 {"point": {"type": "Point","coordinates": [11.5866363,48.1742543]}}
(1 row)

Koordinaten in eine Textform bringen:

test=*# select trim(']' from trim('[' from t -> 'point' ->> 'coordinates')) from tomalkis ;
         btrim         
-----------------------
 11.5866363,48.1742543
(1 row)

das halt weiter aufarbeiten, bis es an ST_GeomFromText verfüttert werden kann. Das ganze dann in ein

insert into ... select ... from ...

gepackt.

Vielen Dank für die Hilfe