Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

GEODATA DAYS 2024

#1 Wed 03 March 2010 11:00

yteb
Participant occasionnel
Date d'inscription: 25 Jun 2007
Messages: 22

Import shape dans postgis par .bat

Bonjour à tous,

J'utilise habituellement des .bat pour importer mes shapes dans ma base postgresql/postgis. Je développe actuellement un outil en local dans lequel je dois importé des shapes. J'ai donc essayé de lancer mes batch depuis php mais ca ne fonctionne pas. Vu que je n'ai bientôt plus de cheveux à m'arracher je lance donc un grand HELP!

Voila les codes que j'utilise :

Mon .bat

Code:

title ma fenetre
cd C:\Program Files\PostgreSQL\8.3\bin
shp2pgsql -s 3947 C:\ms4w\Apache\htdocs\PREDIT_v1.0\sig\shp\import\entites_geographiques.shp entites_geographiques > C:\ms4w\Apache\htdocs\PREDIT_v1.0\sig\shp\import\entites_geographiques.sql
psql -U postgres -d PREDIT -f C:\ms4w\Apache\htdocs\PREDIT_v1.0\sig\shp\import\entites_geographiques.sql

Mon script php

Code:

<?php
 
exec('import_entites_geographiques_rgf93_zone_6.bat');
 
?>

Personne n'aurait une petite idée?

Merci d'avance

Dernière modification par yteb (Wed 03 March 2010 11:11)

Hors ligne

 

#2 Wed 03 March 2010 11:20

Yves
Membre du bureau
Lieu: Aix-les-Bains
Date d'inscription: 22 Mar 2006
Messages: 9860
Site web

Re: Import shape dans postgis par .bat

Bonjour,

Un message d'erreur dans les logs d'Apache ?

La doc explique :

Note: Lorsque le safe mode est activé, vous pouvez uniquement exécuter des programmes qui se situent dans le dossier défini par safe_mode_exec_dir.


Est ce que votre valeur est bien correct ?

Y.


Yves Jacolin, bénévole de l'association GeoRezo.net, agit au nom et pour le compte de l'association - Partageons ce qui nous départage !!  - GeoRezo vous aide ? Aidez GeoRezo !

Hors ligne

 

#3 Wed 03 March 2010 12:02

yteb
Participant occasionnel
Date d'inscription: 25 Jun 2007
Messages: 22

Re: Import shape dans postgis par .bat

Bonjour et merci pour le coup de main.

J'ai regardé dans le php.ini (chemin : C:\ms4w\Apache\cgi-bin\php.ini). Le safe mode est bien sur off...

Pour info, le batch fonctionne bien si je le lance manuellement et le problème persiste si je raccourcis le nom ou le chemin...

Hors ligne

 

#4 Wed 03 March 2010 12:32

MathieuB
Membre du bureau
Lieu: Montpellier
Date d'inscription: 18 Jan 2006
Messages: 1225
Site web

Re: Import shape dans postgis par .bat

Bonjour,

quel est votre message d'erreur?
php sait-il ou chercher le bat ?

Cordialement,


Mathieu BOSSAERT
Association GeoRezo

Hors ligne

 

#5 Wed 03 March 2010 14:22

yteb
Participant occasionnel
Date d'inscription: 25 Jun 2007
Messages: 22

Re: Import shape dans postgis par .bat

En fait je n'ai pas de message d'erreur. En fonction de ce que j'essaye, soit il affiche une page blanche (ce qui est normal car il n'y a rien d'autre que ca dans le script pour l'instant) mais l'integration dans la base postgres ne se fait pas, soit il met 5 minutes a charger la page et abandonne.

Voici comment je le lance cette fois avec le chemin complet

Code:

<?php

exec('C:\\ms4w\\Apache\\htdocs\\PREDIT_v1.0\\sig\\batch\\import.bat');
  
?>

Dernière modification par yteb (Wed 03 March 2010 14:23)

Hors ligne

 

#6 Wed 03 March 2010 15:16

Yves
Membre du bureau
Lieu: Aix-les-Bains
Date d'inscription: 22 Mar 2006
Messages: 9860
Site web

Re: Import shape dans postgis par .bat

Bonjour,

que donne ceci :

Code:

exec('start /B "test" C:\\ms4w\\Apache\\htdocs\\PREDIT_v1.0\\sig\\batch\\import.bat');

J'ai vue des lignes de code où ils utilisaient cmd à la place de start.

Voir ceci : http://www.php.net/manual/en/function.shell-exec.php

Y.


Yves Jacolin, bénévole de l'association GeoRezo.net, agit au nom et pour le compte de l'association - Partageons ce qui nous départage !!  - GeoRezo vous aide ? Aidez GeoRezo !

Hors ligne

 

#7 Wed 03 March 2010 16:37

yteb
Participant occasionnel
Date d'inscription: 25 Jun 2007
Messages: 22

Re: Import shape dans postgis par .bat

J'ai essayé ce bout de code et tenté de bosser sur les liens que vous m'avez mis mais rien n'y fait...Je commence un peu à paniquer la car je suis deja a la bourre sur le projet et que je ne vois pas comment reussir a passer cette etape. J'ai pourtant l'impression que la solution doit etre toute simple...Personne n'a une idée du blocage? J'ai passé la journée dessus et je sais plus vraiment quoi faire...

Hors ligne

 

#8 Wed 03 March 2010 17:23

Nicolas Ribot
Membre
Lieu: Toulouse
Date d'inscription: 9 Sep 2005
Messages: 1538

Re: Import shape dans postgis par .bat

yteb a écrit:

J'ai essayé ce bout de code et tenté de bosser sur les liens que vous m'avez mis mais rien n'y fait...Je commence un peu à paniquer la car je suis deja a la bourre sur le projet et que je ne vois pas comment reussir a passer cette etape. J'ai pourtant l'impression que la solution doit etre toute simple...Personne n'a une idée du blocage? J'ai passé la journée dessus et je sais plus vraiment quoi faire...


Salut,

Il faudrait pas executer une commande du style:

$output = exec("c:\\windows\\system32\\cmd.exe /c C:\\ms4w\\Apache\\htdocs\\PREDIT_v1.0\\sig\\batch\\import.bat");
plutot que le bat ?

(comme indiqué dans la doc php: http://php.net/manual/en/function.exec.php)

Exec doit executer une commande (cmd.exe dans ce cas). Le batch n'est qu'un parametre de cmd.exe

Nico

Hors ligne

 

#9 Thu 04 March 2010 10:16

David.D
Chef de projet SIG & Géoportail93
Lieu: Paris
Date d'inscription: 2 Nov 2005
Messages: 65
Site web

Re: Import shape dans postgis par .bat

Est-ce que l'extension PHP_OGR de php ne peut pas faire la même chose, à savoir importer un SHP dans PG ?
J'utilise cette extension dans le sens inverse, pour faire des exports

PG > SHP et TAB ; ça serait dommage que ça ne le fasse dans le sens SHP

> PG. Je faisais des *.bat auparavant, mais j'ai abandonné car j'avais

les même pbmes pour les lancer depuis PHP.

David

Hors ligne

 

#10 Thu 04 March 2010 13:59

yteb
Participant occasionnel
Date d'inscription: 25 Jun 2007
Messages: 22

Re: Import shape dans postgis par .bat

Bon ca y est j'ai résolu le problème

En fait il fallait simplement gérer dans mon script une variable d'environnement contenant le mot de passe de la base. La commande bloquait en effet au niveau de l'import du fichier sql dans ma base.

Pour le script php :

Code:

<?php

$mdp = mot de passe;

putenv("PGPASSWORD=$mdp");

exec('C:\\ms4w\\Apache\\htdocs\\PREDIT_v1.0\\sig\\batch\\import.bat');
 
?>

Pour le fichier .bat le classique :


Code:

@ECHO OFF

REM import du shape dans la base

cd C:\Program Files\PostgreSQL\8.3\bin

shp2pgsql -s 3947 C:\ms4w\Apache\htdocs\PREDIT_v1.0\sig\shp\import\entites_geographiques.shp entites_geographiques > C:\ms4w\Apache\htdocs\PREDIT_v1.0\sig\shp\import\entites_geographiques.sql

psql -U postgres PREDIT < C:\ms4w\Apache\htdocs\PREDIT_v1.0\sig\shp\import\entites_geographiques.sql

:ALL_DONE

Merci beaucoup pour vos contributions. En espérant que ca aide quelqu'un d'autre !

Cordialement

Hors ligne

 

Pied de page des forums

Powered by FluxBB