¿Importando .shp a PostgreSQL?

14

Quiero importar un archivo shp a postgreSQL. Primero creo un archivo sql y luego ejecuto PostgreSQL. Para crear un archivo sql, ejecuto este comando en Windows cmd:

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

y luego ejecuta:

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

pero el resultado es:

psql: worldcountries.sql: 21: ERROR: la función addGeometrycolumn (desconocido, desconocido, desconocido, desconocido, desconocido, entero) no existe

Morteza Malvandi
fuente

Respuestas:

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

Parece que PostGIS aún no está instalado. PostGIS es una extensión de Postgres que permite el uso de archivos geográficos.

Instálelo y su importación funcionará bien.

Leasye
fuente
3
Y el comando es "CREATE EXTENSION postgis;"postgis.net/docs/… .
user30184
1
@ user30184 Absolutamente correcto, pero tenga en cuenta que esto supone PostgreSQL 9.1 o superior. (En mi opinión, hay muy pocas razones para usar algo más antiguo)
Jpmc26
3

Esto ERROR: function addGeometrycolumn(unknown, unknown, unknown, unknown,unknown, integer) does not existsignifica que la extensión postgis no está instalada en su postgresql . Ve aquí e instálalo.

Morteza Malvandi
fuente
1

Puede usar el complemento de importación incorporado que se instala cuando instala la extensión PostGis en PostgreSQL. Puede encontrarlo en Complementos en el menú y se llama PostGIS Shapefile y DBF loader.

mira este video de youtube como ejemplo

Daniël Tulp
fuente
0

Tienes una proyección diferente en tu psql; y no es necesario tener una proyección. ¿Hay un esquema al que desea agregar el archivo de forma?

Esto debería funcionar:

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

psql -f worldcountries.sql -h [host] -d [database] -U postgres
Stefan
fuente
3
-ppara psqlle dice el puerto del servidor, no la proyección. La proyección se incrusta en el script SQL. Vea el buen manual para psqlel comportamiento de. En este caso, el puerto que especifica el OP no es el puerto predeterminado, por lo que es obligatorio. También generalmente recomendaría no almacenar una forma sin una proyección. Esto limita su capacidad de cambiar las proyecciones, lo que puede ser útil para obtener cálculos más precisos.
jpmc26