Laden Sie mehrere Shapefiles stapelweise in Postgis

11

Laut der shp2pgsqlHilfe schließen sich die Optionen Löschen , Anhängen , Erstellen und Vorbereiten gegenseitig aus. Wenn ich also eine Tabelle aus einer Form erstellen und dann mehrere andere Shapefiles anhängen möchte, gehe ich wie folgt vor und behalte einen Zähler bei, um anzuzeigen, ob wir uns im Erstellungs- oder im Anhänge-Modus befinden.

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

Das funktioniert wie erwartet, aber ich habe mich oft gefragt, ob es einen einfacheren Weg gibt.

John Powell
quelle

Antworten:

4

Wenn Sie ogr2ogr verwenden können, werden die Erstellungsoptionen beim Anhängen und die Anhängeoptionen beim Erstellen ignoriert.

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

Oder in Fenstern in der Kommandozeile:

for /R %f in (*.shp) do ogr2ogr -f "PostgreSQL" PG:dbname=databasename -append -nln schema.table_name "%f"
HeikkiVesanto
quelle
1
Sicher, ogr2ogr funktioniert. Ich dachte, es gäbe eine einfache Lösung. Vielen Dank
John Powell