Batch memuat beberapa shapefile ke Postgis


11

Menurut shp2pgsqlbantuan, opsi drop , append , create , dan preparate saling eksklusif. Jadi, jika saya ingin membuat tabel dari suatu bentuk dan kemudian menambahkan beberapa bentuk lain, saya melakukan sesuatu seperti berikut, menjaga penghitung untuk menunjukkan apakah kita berada dalam mode buat atau tambahkan.

cnt=0
for shp in $(ls *.shp); do

if [ $cnt -eq  0 ]  ; then

   shp2pgsql -s 27700 -c $shp schema.table_name | psql -h localhost db 

else

   shp2pgsql -s 27700 -a $shp schema.table_name | psql -h localhost db 

fi
((cnt++))
done

Ini berfungsi, seperti yang diharapkan, tetapi saya sering bertanya-tanya apakah ada cara yang lebih sederhana?

Jawaban:


4

Jika Anda dapat menggunakan ogr2ogr, ia akan mengabaikan opsi membuat saat menambahkan, dan mengabaikan opsi menambahkan saat membuat.

for shp in $(ls *.shp);
do
  ogr2ogr -f "PostgreSQL" PG:dbname=databasename -append -a_srs 27700 -nln schema.table_name $shp
done

Atau di windows di baris perintah:

for /R %f in (*.shp) do ogr2ogr -f "PostgreSQL" PG:dbname=databasename -append -nln schema.table_name "%f"

1
Tentu, ogr2ogr berfungsi. Berpikir akan ada solusi sederhana. Terima kasih
John Powell
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.