Pour ceux qui travaillent avec Postgis de manière plus ou moins fréquente , si vous avez des difficultés d’intégration de plusieurs shapefiles en même temps, voici un script batch qui fera office d’ETL.
Il peut être exécuté sans problème malgré un nombre important de shapefiles ( Tester sur un dossier de 55 shp ). Voici les paramètres à modifier:
- D’abord définir les variables vers les shp, et exécutables de postgres
set PATH_SHP="C:\Users\ABDOU\shapefiles" set PATH_PSQL=C:\Program Files\PostgreSQL\9.5\bin\psql.exe set PATH_SHP2SQL=C:\Program Files\PostgreSQL\9.5\bin\shp2pgsql.exe set PATH_SQL="C:\Script_Abdou\shp\shp2pgsql\sql"
- Les variables pour les paramètres de connexions
set pghost=votre host exemple localhost set pgport=5432 set pgdb=votre base de données set pgsrid= votre système de projection exemple 2154 set pggeom= le nom de votre colonne géométrique exemple geom set pgencoding="CP1252" set pgschema= le schema ou importer les shp
- La procédure d’exécution pour chaque shp
REM "Parcourir le dossier et créer un fichier sql pour chaque shp " for %%f in (%PATH_SHP%\*.shp) do "%PATH_SHP2SQL%" -s %pgsrid% -g %pggeom% -d -D -i -I -W %pgencoding% %%f %pgschema%.%%~nf > %PATH_SQL%\%%~nf.sql REM "Parcourir le dossier sql et intégrer les fichiers SQL dans la base de données Postgres et créer un fichier log pour chaque données intégrées" for %%f in (%PATH_SQL%\*.sql) do "%PATH_PSQL%" -h %pghost% -p %pgport% -d %pgdb% -L %%~nxf.log -U %pguser% -f %%f REM " Supprimer tous les fichiers sql dans le dossier SQL " for %%f in (%PATH_SQL%\*.sql) do del %%f
Après ces changements enregistrer le fichier au format .bat
Exemple shapefiles2postgis.bat
Double cliquer sur le fichier .bat pour l’exécuter
Et attendre les résultats …. 🙂
Pour plus de détails le fichier est disponible ici