Carica in batch più shapefile su Postgis


11

Secondo l' shp2pgsqlaiuto, le opzioni di rilascio , aggiunta , creazione e preparazione si escludono a vicenda. Quindi, se voglio creare una tabella da una forma e quindi aggiungere più altri shapefile, faccio qualcosa come il seguente, tenendo un contatore per indicare se siamo in modalità di creazione o aggiunta.

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

Funziona, come previsto, ma mi sono spesso chiesto se esiste un modo più semplice?

Risposte:


4

Se sei in grado di usare ogr2ogr, ignorerà le opzioni di creazione durante l'aggiunta e le opzioni di aggiunta durante la creazione.

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

O in windows nella riga di comando:

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

1
Certo, ogr2ogr funziona. Ho pensato che ci sarebbe stata una soluzione semplice. Grazie
John Powell,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.