Импортировать .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, которое позволяет использовать географические файлы.

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


3
И команда это "CREATE EXTENSION postgis;"postgis.net/docs/… .
user30184

1
@ user30184 Абсолютно правильно, но учтите, что это предполагает PostgreSQL 9.1 или выше. (По моему мнению, очень мало причин использовать что-то более старое.)
jpmc26


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
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.