Імпортувати .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: ПОМИЛКА: функція addGeometryколонок (unknown, unknown, unknown, unknown, unknown, integer) не існує

Відповіді:


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

Схоже, PostGIS ще не встановлений. PostGIS - це розширення Postgres, яке дозволяє використовувати географічні файли.

Встановіть його, і імпорт буде нормально працювати.


3
І команда - "CREATE EXTENSION postgis;"postgis.net/docs/… .
користувач30184

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
-pбо psqlповідомляє це порт сервера, а не проекція. Проекція вбудовується в сценарій SQL. Дивіться прекрасний посібник для psqlповедінки. У цьому випадку порт, який вказує OP, не є портом за замовчуванням, тому він необхідний. Я б також загалом радив не зберігати форму без виступу. Це обмежує вашу здатність змінювати проекції, що може бути корисно для отримання більш точних розрахунків.
jpmc26
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.