Partia ładuje wiele plików kształtów do Postgis

11

Zgodnie z shp2pgsqlpomocą opcje upuszczania , dołączania , tworzenia i przygotowywania wzajemnie się wykluczają. Tak więc, jeśli chcę utworzyć tabelę z kształtu, a następnie dołączyć wiele innych plików kształtów, robię coś takiego, zachowując licznik wskazujący, czy jesteśmy w trybie tworzenia, czy dołączania.

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

Działa to zgodnie z oczekiwaniami, ale często zastanawiałem się, czy istnieje prostszy sposób?

John Powell
źródło

Odpowiedzi:

4

Jeśli możesz użyć ogr2ogr, zignoruje tworzenie opcji podczas dołączania i ignoruje opcje dołączania podczas tworzenia.

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

Lub w systemie Windows w wierszu polecenia:

for /R %f in (*.shp) do ogr2ogr -f "PostgreSQL" PG:dbname=databasename -append -nln schema.table_name "%f"
HeikkiVesanto
źródło
1
Jasne, ogr2ogr działa. Pomyślałem, że będzie proste rozwiązanie. Dzięki
John Powell,