Импортировать .shp в PostgreSQL?

14

Я хочу импортировать файл shp в postgreSQL. Сначала я создаю файл sql, а затем запускаю PostgreSQL. Чтобы создать файл sql, я запускаю эту команду в Windows cmd:

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

а затем запустите:

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

но результат таков:

psql: worldcountries.sql: 21: ОШИБКА: функция addGeometrycolumn (неизвестно, неизвестно, неизвестно, неизвестно, неизвестно, целое число) не существует

Мортеза Мальванди
источник

Ответы:

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

Кажется, что PostGIS еще не установлен. PostGIS - это расширение Postgres, которое позволяет использовать географические файлы.

Установите его, и ваш импорт будет работать нормально.

Leasye
источник
3
И команда это "CREATE EXTENSION postgis;"postgis.net/docs/… .
user30184
1
@ user30184 Абсолютно правильно, но учтите, что это предполагает PostgreSQL 9.1 или выше. (По моему мнению, очень мало причин использовать что-то более старое.)
jpmc26
3

Это ERROR: function addGeometrycolumn(unknown, unknown, unknown, unknown,unknown, integer) does not existозначает, что расширение postgis не установлено на вашем postgresql . Зайдите сюда и установите его.

Мортеза Мальванди
источник
1

Вы можете использовать встроенный плагин для импорта, который устанавливается при установке расширения PostGis в PostgreSQL. Вы можете найти его в разделе «Плагины» в меню. Он называется PostGIS Shapefile и DBF loader.

посмотрите это видео на YouTube в качестве примера

Даниэль Тулп
источник
0

У вас есть другая проекция в вашем PSQL; и иметь проекцию не обязательно. Есть ли схема, к которой вы хотите добавить файл формы?

Это должно работать:

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

psql -f worldcountries.sql -h [host] -d [database] -U postgres
Стефан
источник
3
-pfor psqlсообщает ему порт сервера, а не проекцию. Проекция становится встроенной в сценарий SQL. См. Прекрасное руководство для psqlповедения. В этом случае порт, который указывает OP, не является портом по умолчанию, поэтому он является обязательным. Я бы также вообще не советовал хранить фигуру без проекции. Это ограничивает вашу способность изменять прогнозы, что может быть полезно для получения более точных расчетов.
jpmc26