Il existe un moyen vraiment simple de charger le contenu d'un répertoire de shapefiles dans une base de données Posgresql/PostGIS avec les outils, shp2pgsql et psql.
L'utilitaire permettant de charger les commandes SQL (psql) interdit la saisie d'un mot de passe en clair dans une ligne de commande. Pour contourner ce problème, on peut configurer un fichier .pgpass. Le contenu de ce fichier prend cette forme:
nom_hote:port:database:nomutilisateur:motdepasse
Il est impératif de changer les droits d'accès à ce fichier sinon psql n'en tiendra pas compte.
sudo vim ~/.pgpass sudo chmod 0600 ~/.pgpassPar la suite, j'utilise ce petit bash pour générer les lignes de commandes. Ici je transforme le nom du shapefiles en minuscule parce que Postrgresql est "case sensitive" et c'est plus propre de garder les noms de tables en minuscules:
vim shp2sqlfile.sh ---> ajouter ces lignes: #!/bin/bash for f in *shp do name=$(basename $f .shp| tr '[A-Z]' '[a-z]') echo /usr/lib/postgresql/9.1/bin/shp2pgsql -c -I -W "latin1" -s "EPSG:4326" -g "the_geom" $f $name "| psql -d my_geodb -h localhost -U postgres -w" doneNe reste plus qu'a exécuter le batch et rediriger dans un fichier de commandes:
$ sh shp2sqlfile.sh >batch.sh