Importando .shp para PostgreSQL?

14

Eu quero importar um arquivo shp para o postgreSQL. Primeiro, crio o arquivo sql e depois executo o PostgreSQL. Para criar um arquivo sql, eu executo este comando no windows cmd:

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

e então execute:

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

mas o resultado é:

psql: worldcountries.sql: 21: ERRO: a função addGeometrycolumn (desconhecido, desconhecido, desconhecido, desconhecido, desconhecido, número inteiro) não existe

Morteza Malvandi
fonte

Respostas:

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

Parece que o PostGIS ainda não está instalado. PostGIS é uma extensão do Postgres que permite o uso de arquivos geográficos.

Instale-o e sua importação funcionará bem.

Leasye
fonte
3
E o comando é "CREATE EXTENSION postgis;"postgis.net/docs/… .
user30184
1
@ user30184 Absolutamente correto, mas observe que isso pressupõe o PostgreSQL 9.1 ou superior. (Há muito pouca razão para usar qualquer coisa mais antiga, na minha opinião.)
jpmc26
3

O ERROR: function addGeometrycolumn(unknown, unknown, unknown, unknown,unknown, integer) does not existque significa que a extensão postgis não está instalada no seu postgresql . Vá aqui e instale-o.

Morteza Malvandi
fonte
1

Você pode usar o plug-in de importação de compilação instalado ao instalar a extensão PostGis no PostgreSQL. Você pode encontrá-lo em Plugins no menu e é chamado de carregador PostGIS Shapefile e DBF.

assista a este vídeo do youtube como um exemplo

Daniël Tulp
fonte
0

Você tem uma projeção diferente no seu psql; e ter uma projeção não é necessário. Existe um esquema ao qual você deseja adicionar o arquivo de formas?

Isso deve funcionar:

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

psql -f worldcountries.sql -h [host] -d [database] -U postgres
Stefan
fonte
3
-ppara psqlinforma a porta do servidor, não a projeção. A projeção fica incorporada no script SQL. Veja o manual fino para psqlo comportamento de. Nesse caso, a porta especificada pelo OP não é a porta padrão, portanto é necessária. Eu também geralmente desaconselharia o armazenamento de uma forma sem projeção. Isso limita sua capacidade de alterar projeções, o que pode ser útil para obter cálculos mais precisos.
precisa saber é o seguinte