.Shp nach PostgreSQL importieren?

13

Ich möchte eine shp-Datei nach postgreSQL importieren. Zuerst erstelle ich eine SQL-Datei und starte dann PostgreSQL. Um eine SQL-Datei zu erstellen, führe ich diesen Befehl in Windows Cmd aus:

shp2pgsql -s 4326 worldCountries.shp worldcountries postgres > worldcountries.sql

und dann laufen:

psql -d postgres -U postgres -p 4321 -f worldcountries.sql

aber das Ergebnis ist:

psql: worldcountries.sql: 21: FEHLER: Funktion addGeometrycolumn (unbekannt, unbekannt, unbekannt, unbekannt, unbekannt, ganzzahlig) existiert nicht

Morteza Malvandi
quelle

Antworten:

13
ERROR: **function addGeometrycolumn**(unknown, unknown, unknown, unknown,unknown, integer) does not exist

Es scheint, dass PostGIS noch nicht installiert ist. PostGIS ist eine Erweiterung von Postgres, die die Verwendung von geografischen Dateien ermöglicht.

Installieren Sie es und Ihr Import wird gut funktionieren.

Leasye
quelle
3
Und der Befehl lautet "CREATE EXTENSION postgis;"postgis.net/docs/… .
user30184
1
@ user30184 Absolut korrekt, aber beachten Sie, dass dies PostgreSQL 9.1 oder höher voraussetzt. (Meiner Meinung nach gibt es kaum einen Grund, etwas Älteres zu verwenden.)
jpmc26
3

Das ERROR: function addGeometrycolumn(unknown, unknown, unknown, unknown,unknown, integer) does not existbedeutet, dass die postgis-Erweiterung nicht auf Ihrem postgresql installiert ist . Gehen Sie hier und installieren Sie es.

Morteza Malvandi
quelle
1

Sie können das eingebaute Import-Plugin verwenden, das installiert wird, wenn Sie die PostGis-Erweiterung in PostgreSQL installieren. Sie finden es unter Plugins im Menü und heißt PostGIS-Shapefile und DBF-Loader

Sehen Sie sich dieses YouTube- Video als Beispiel an

Daniël Tulp
quelle
0

Sie haben eine andere Projektion in Ihrem psql; und eine Projektion ist nicht notwendig. Gibt es ein Schema, zu dem Sie die Formdatei hinzufügen möchten?

Das sollte funktionieren:

shp2pgsql -s 4326 -I worldcountries.shp schema.worldcountries > dr_worldcountries.sql

psql -f worldcountries.sql -h [host] -d [database] -U postgres
Stefan
quelle
3
-pfor gibt psqlden Port des Servers an, nicht die Projektion. Die Projektion wird in das SQL-Skript eingebettet. Informationen zum psqlVerhalten finden Sie im Handbuch . In diesem Fall ist der vom OP angegebene Port nicht der Standardport, sodass er erforderlich ist. Ich würde auch generell davon abraten, eine Form ohne Projektion zu speichern. Dies schränkt Ihre Fähigkeit ein, Projektionen zu ändern. Dies kann hilfreich sein, um genauere Berechnungen zu erhalten.
jpmc26