Charger par lots plusieurs fichiers de formes dans Postgis

11

Selon l' shp2pgsqlaide, les options de suppression , d' ajout , de création et de préparation s'excluent mutuellement. Donc, si je veux créer un tableau à partir d'une forme puis ajouter plusieurs autres fichiers de formes, je fais quelque chose comme ceci, en gardant un compteur pour indiquer si nous sommes en mode création ou ajout.

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

Cela fonctionne, comme prévu, mais je me suis souvent demandé s'il existait un moyen plus simple?

John Powell
la source

Réponses:

4

Si vous pouvez utiliser ogr2ogr, il ignorera les options de création lors de l'ajout et ignorera les options d'ajout lors de la création.

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

Ou dans les fenêtres de la ligne de commande:

for /R %f in (*.shp) do ogr2ogr -f "PostgreSQL" PG:dbname=databasename -append -nln schema.table_name "%f"
HeikkiVesanto
la source
1
Bien sûr, ogr2ogr fonctionne. Je pensais qu'il y aurait une solution simple. Merci
John Powell