Importujesz .shp do PostgreSQL?

14

Chcę zaimportować plik shp do postgreSQL. Najpierw tworzę plik sql, a następnie uruchamiam PostgreSQL. Aby utworzyć plik sql, uruchamiam polecenie w Windows cmd:

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

a następnie uruchom:

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

ale wynikiem jest:

psql: worldcountries.sql: 21: ERROR: funkcja addGeometrycolumn (nieznany, nieznany, nieznany, nieznany, nieznany, liczba całkowita) nie istnieje

Morteza Malvandi
źródło

Odpowiedzi:

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

Wygląda na to, że PostGIS nie jest jeszcze zainstalowany. PostGIS to rozszerzenie Postgres, które umożliwia korzystanie z plików geograficznych.

Zainstaluj go, a import będzie działał dobrze.

Leasye
źródło
3
Polecenie to "CREATE EXTENSION postgis;"postgis.net/docs/… .
user30184,
1
@ user30184 Absolutnie poprawne, ale pamiętaj, że zakłada to PostgreSQL 9.1 lub nowszy. (Moim zdaniem nie ma powodu, aby używać czegoś starszego.)
jpmc26,
3

Te ERROR: function addGeometrycolumn(unknown, unknown, unknown, unknown,unknown, integer) does not existśrodki, że rozszerzenie postgis nie jest zainstalowany na PostgreSQL . Idź tutaj i zainstaluj.

Morteza Malvandi
źródło
1

Możesz użyć wbudowanej wtyczki importu, która jest instalowana podczas instalowania rozszerzenia PostGis w PostgreSQL. Możesz go znaleźć pod Wtyczkami w menu i nazywa się PostGIS Shapefile i moduł ładujący DBF

obejrzyj ten film na youtube jako przykład

Daniël Tulp
źródło
0

Masz inną projekcję w swoim psql; a projekcja nie jest konieczna. Czy istnieje schemat, do którego chcesz dodać plik kształtu?

To powinno działać:

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

psql -f worldcountries.sql -h [host] -d [database] -U postgres
Stefan
źródło
3
-pbo psqlmówi port serwera, a nie rzut. Projekcja zostaje osadzona w skrypcie SQL. Patrz podręcznik grzywny dla psql„s zachowanie. W takim przypadku port określony przez OP nie jest domyślnym portem, więc jest wymagany. Ogólnie odradzałbym także przechowywanie kształtu bez wystającego elementu. Ogranicza to możliwość zmiany projekcji, co może być pomocne w uzyskiwaniu dokładniejszych obliczeń.
jpmc26,