Kopieren der Datensätze verschiedenen Datenbanken

Fragen und Probleme rund um die Abfragespache SQL.
Antworten
tomalkis
Neuer Benutzer
Beiträge: 26
Registriert: Fr 14. Sep 2018, 11:01
Wohnort: Olching

Kopieren der Datensätze verschiedenen Datenbanken

Beitrag von tomalkis » Mo 17. Sep 2018, 14:29

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

akretschmer
Erfahrener Benutzer
Beiträge: 7640
Registriert: So 29. Okt 2006, 13:35
Wohnort: Kaufbach, Sachsen, Germany, Germany
Kontaktdaten:

Re: Kopieren der Datensätze verschiedenen Datenbanken

Beitrag von akretschmer » Mo 17. Sep 2018, 14:45

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


Andreas
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

tomalkis
Neuer Benutzer
Beiträge: 26
Registriert: Fr 14. Sep 2018, 11:01
Wohnort: Olching

Re: Kopieren der Datensätze verschiedenen Datenbanken

Beitrag von tomalkis » Mo 17. Sep 2018, 16:07

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.

tomalkis
Neuer Benutzer
Beiträge: 26
Registriert: Fr 14. Sep 2018, 11:01
Wohnort: Olching

Re: Kopieren der Datensätze verschiedenen Datenbanken

Beitrag von tomalkis » Mo 17. Sep 2018, 16:26

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.

akretschmer
Erfahrener Benutzer
Beiträge: 7640
Registriert: So 29. Okt 2006, 13:35
Wohnort: Kaufbach, Sachsen, Germany, Germany
Kontaktdaten:

Re: Kopieren der Datensätze verschiedenen Datenbanken

Beitrag von akretschmer » Mo 17. Sep 2018, 16:54

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

Code: Alles auswählen

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

Koordinaten in eine Textform bringen:

Code: Alles auswählen

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

Code: Alles auswählen

insert into ... select ... from ...
gepackt.
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

tomalkis
Neuer Benutzer
Beiträge: 26
Registriert: Fr 14. Sep 2018, 11:01
Wohnort: Olching

Re: Kopieren der Datensätze verschiedenen Datenbanken

Beitrag von tomalkis » Di 18. Sep 2018, 11:06

Vielen Dank für die Hilfe

Antworten