#1 Wed 18 July 2012 08:58
- ppluvinet
- Participant assidu
- Lieu: VALENCE
- Date d'inscription: 6 Aug 2007
- Messages: 617
POSTGIS : Export de table selon attribut
Bonjour,
J'ai une polyline dans une base de donnée postgis avec un attribut "station" et je souhaite l'exporter avec un pgsql2shp en autant de shape qu'il y a de stations et le tout dans un même dossier avec comme nom du shp le nom de la station. En gros j'envisageais une boucle qui fait
Pour i dans (select distinct station from mypolyline) {
\! pgsql2shp -p 5432 -h localhost -u postgres -f "monchemin\i -P motdepasse mabdd "select * from mypolyline where station = i
}
Seulement, je ne connais pas la syntaxe à utiliser en sql ou en batch windows.
Avez-vous déjà fait ceci ?
Merci d'avance,
Pascal PLUVINET
Hors ligne
#2 Wed 18 July 2012 10:40
- Nicolas Ribot
- Membre
- Lieu: Toulouse
- Date d'inscription: 9 Sep 2005
- Messages: 1554
Re: POSTGIS : Export de table selon attribut
Bonjour,
Batch non, shell plutot ?
Nicolas
Hors ligne
#3 Wed 18 July 2012 11:33
- ppluvinet
- Participant assidu
- Lieu: VALENCE
- Date d'inscription: 6 Aug 2007
- Messages: 617
Re: POSTGIS : Export de table selon attribut
Heu oui Shell window !
Pascal PLUVINET
Hors ligne
#4 Wed 18 July 2012 15:09
- Nicolas Ribot
- Membre
- Lieu: Toulouse
- Date d'inscription: 9 Sep 2005
- Messages: 1554
Re: POSTGIS : Export de table selon attribut
Je ne connais pas trop la syntaxe en shell windows.
En shell ou bash, je ferais qqch comme (pas testé):
Code:
$station = `psql -At -c "select distinct station from mypoly"` for i in $station; do pgsql2shp -f fichier_$i.shp ... "select * from mypoly where station=$i" done
Nicolas
Hors ligne
#5 Wed 18 July 2012 16:09
- ppluvinet
- Participant assidu
- Lieu: VALENCE
- Date d'inscription: 6 Aug 2007
- Messages: 617
Re: POSTGIS : Export de table selon attribut
Merci Nicolas,
je testerai et ferai un retour
Pascal PLUVINET
Hors ligne
#6 Wed 18 July 2012 16:28
- Nicolas Ribot
- Membre
- Lieu: Toulouse
- Date d'inscription: 9 Sep 2005
- Messages: 1554
Re: POSTGIS : Export de table selon attribut
Sinon, une idee qui me vient, un peu moins propre que l'autre, mais que j'utilise souvent pour faire des traitements "one shot" consisterai a ecrire une requete SQL qui génèrerait les commandes pgsql2shp qui vont bien pour générer un shape par station:
Code:
WITH unique_stations as ( select distinct station from mypolyline ) select 'pgsql2shp -p 5432 -h localhost -u postgres -f monchemin\fichier_' || station || '.shp "select * from mypolyline where station ='||station||'"'; from unique_stations.
Ensuite, coller le resultat de cette requete dans un fichier .bat ou directement dans une fenetre cmd et lancer le tout (apres avoir vérifier que ca marche pour une ou deux stations)
Nicolas
Hors ligne
#7 Thu 19 July 2012 12:22
- ppluvinet
- Participant assidu
- Lieu: VALENCE
- Date d'inscription: 6 Aug 2007
- Messages: 617
Re: POSTGIS : Export de table selon attribut
En m'inspirant de ce que Nicolas proposait (deuxième solution), voilà ce que j'ai finalement fait :
Code:
create table export as select ' C:\postgres\bin\pgsql2shp -p 5432 -h localhost -u postgres -f "D:\OUTPUT_POSTGIS\STAT\' || a.nom_statio || '.shp" -P mypassword mybdd "select * from mypolyline where idsta ='||a.idsta||'"' from (select distinct idsta , nom_statio from mypolyline) as a ; \COPY export to D:\OUTPUT_POSTGIS\exportshp.bat
L'idée étant , tout en restant dans la console postgres de créer un fichier bat que j’exécute ensuite.
Merci encore
Pascal PLUVINET
Hors ligne