Vous importez .shp dans PostgreSQL?

14

Je veux importer un fichier shp dans postgreSQL. Tout d'abord, je crée un fichier sql, puis j'exécute PostgreSQL. Pour créer un fichier sql, j'exécute cette commande dans windows cmd:

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

puis exécutez:

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

mais le résultat est:

psql: worldcountries.sql: 21: ERREUR: la fonction addGeometrycolumn (inconnu, inconnu, inconnu, inconnu, inconnu, entier) n'existe pas

Morteza Malvandi
la source

Réponses:

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

Il semble que PostGIS ne soit pas encore installé. PostGIS est une extension de Postgres qui permet l'utilisation de fichiers géographiques.

Installez-le et votre importation fonctionnera bien.

Leasye
la source
3
Et la commande est "CREATE EXTENSION postgis;"postgis.net/docs/… .
user30184
1
@ user30184 Absolument correct, mais notez que cela suppose PostgreSQL 9.1 ou supérieur. (Il y a très peu de raisons d'utiliser quelque chose de plus ancien, à mon avis.)
jpmc26
3

Les ERROR: function addGeometrycolumn(unknown, unknown, unknown, unknown,unknown, integer) does not existmoyens que l' extension PostGIS n'est pas installé sur votre postgresql . Allez ici et installez-le.

Morteza Malvandi
la source
1

Vous pouvez utiliser le plugin build in import qui est installé lorsque vous installez l'extension PostGis dans PostgreSQL. Vous pouvez le trouver sous Plugins dans le menu et il s'appelle PostGIS Shapefile et DBF loader

regardez cette vidéo youtube comme exemple

Daniël Tulp
la source
0

Vous avez une projection différente dans votre psql; et avoir une projection n'est pas nécessaire. Y a-t-il un schéma auquel vous souhaitez ajouter le fichier de forme?

Cela devrait fonctionner:

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

psql -f worldcountries.sql -h [host] -d [database] -U postgres
Stefan
la source
3
-pcar lui psqlindique le port du serveur, pas la projection. La projection est intégrée dans le script SQL. Voir le manuel fin pour psqlle comportement de. Dans ce cas, le port spécifié par l'OP n'est pas le port par défaut, il est donc requis. Je déconseille également généralement de stocker une forme sans projection. Cela limite votre capacité à modifier les projections, ce qui peut être utile pour obtenir des calculs plus précis.
jpmc26