Carga por lotes múltiples archivos de forma en Postgis


11

Según la shp2pgsqlayuda, las opciones de descartar , agregar , crear y preparar son mutuamente excluyentes. Entonces, si quiero crear una tabla a partir de una forma y luego agregar varios otros archivos de forma, hago algo como lo siguiente, manteniendo un contador para indicar si estamos en modo de creación o anexión.

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

Esto funciona, como se esperaba, pero a menudo me he preguntado si hay una manera más simple.

Respuestas:


4

Si puede usar ogr2ogr, ignorará las opciones de creación al agregar e ignorará las opciones de agregar al crear.

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

O en ventanas en la línea de comando:

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

1
Claro, ogr2ogr funciona. Pensé que habría una solución simple. Gracias
John Powell
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.