Mengimpor .shp ke PostgreSQL?

14

Saya ingin mengimpor file shp ke postgreSQL. Pertama saya membuat file sql dan kemudian menjalankan PostgreSQL. Untuk membuat file sql, saya menjalankan perintah ini di windows cmd:

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

lalu jalankan:

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

tetapi hasilnya adalah:

psql: worldcountries.sql: 21: ERROR: function addGeometrycolumn (tidak diketahui, tidak diketahui, tidak diketahui, tidak diketahui, tidak diketahui, integer) tidak ada

Morteza Malvandi
sumber

Jawaban:

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

Tampaknya PostGIS belum diinstal. PostGIS adalah perpanjangan dari Postgres yang memungkinkan penggunaan file geografis.

Pasang dan impor Anda akan berfungsi dengan baik.

Leasye
sumber
3
Dan perintahnya adalah "CREATE EXTENSION postgis;"postgis.net/docs/… .
user30184
1
@ user30184 Benar sekali, tetapi harap dicatat bahwa ini mengasumsikan PostgreSQL 9.1 atau lebih tinggi. (Ada sangat sedikit alasan untuk menggunakan sesuatu yang lebih tua, menurut saya.)
jpmc26
3

The ERROR: function addGeometrycolumn(unknown, unknown, unknown, unknown,unknown, integer) does not existberarti bahwa ekstensi PostGIS tidak diinstal pada Anda postgresql . Buka di sini dan instal.

Morteza Malvandi
sumber
1

Anda dapat menggunakan plugin impor yang terpasang ketika Anda menginstal ekstensi PostGis di PostgreSQL Anda dapat menemukannya di bawah Plugin di menu dan disebut PostGIS Shapefile dan DBF loader

tonton video youtube ini sebagai contoh

Daniël Tulp
sumber
0

Anda memiliki proyeksi berbeda di psql Anda; dan memiliki proyeksi tidak diperlukan. Apakah ada skema yang Anda ingin tambahkan file bentuk?

Ini seharusnya bekerja:

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

psql -f worldcountries.sql -h [host] -d [database] -U postgres
Stefan
sumber
3
-puntuk psqlmengatakan itu port server, bukan proyeksi. Proyeksi menjadi tertanam dalam skrip SQL. Lihat manual bagus untuk psqlperilaku. Dalam hal ini, port yang ditentukan OP bukanlah port default, jadi itu diperlukan. Saya juga biasanya menyarankan untuk tidak menyimpan bentuk tanpa proyeksi. Ini membatasi kemampuan Anda untuk mengubah proyeksi, yang dapat membantu untuk mendapatkan perhitungan yang lebih akurat.
jpmc26