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.

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"

1
Sicher, ogr2ogr funktioniert. Ich dachte, es gäbe eine einfache Lösung. Vielen Dank
John Powell
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.