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?

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"

1
Bien sûr, ogr2ogr fonctionne. Je pensais qu'il y aurait une solution simple. Merci
John Powell
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.