#1 Fri 01 July 2011 10:03
- bap
- Juste Inscrit !
- Date d'inscription: 1 Jul 2011
- Messages: 3
[Postgis] Requette sql postgis
Bonjour,
Je suis en stage dans une entreprise et ai mis en place une base de données spatiale postgis.
Je voudrais sur la base postgis supprimer des colonnes communes à toutes mes tables sans le faire une par une avec
Alter table [schéma].[table] drop column [Nom_collonnes] ,
En altérant toutes les tables de toute la base en même temps, vue que les colonnes existent dans toutes.
Les colonnes que je veut supprimer sont des colonnes inutiles du genre mapinfo_syle etc..Donc est -il possible de faire un alter table sur tout un schémas ou sur tout une base, et comment il faut si prendre (syntaxe sql).
Merci d’avance pour votre aide qui me sera précieuse.
Hors ligne
#2 Fri 01 July 2011 10:10
- cyrille
- Participant assidu
- Date d'inscription: 7 Feb 2006
- Messages: 401
Re: [Postgis] Requette sql postgis
Bonjour, tu peux peut être passer par un script? qui bouclerait sur chacune de tes tables?
Hors ligne
#3 Fri 01 July 2011 10:34
- bap
- Juste Inscrit !
- Date d'inscription: 1 Jul 2011
- Messages: 3
Re: [Postgis] Requette sql postgis
et comment je dois m'y prendre
Hors ligne
#4 Fri 01 July 2011 12:00
Re: [Postgis] Requette sql postgis
Bonjour,
Étant en stage tu as du temps pour apprendre ^^ voici quelques pistes, sous linux :
psql te permet de lancer des requêtes. Tu as la possibilité de récupérer la liste des tables d'un schéma avec cette requête : "select * from pg_tables WHERE schemaname = 'public'". Je te laisse trouver la liste des colonnes d'une table
Ensuite ton script batch devra avoir cette structure :
1. récupération de la liste des tables
-> pour chaque table
2. récupération de la liste des colonnes ?
3. traitement de la colonne
Code:
for i in ``;do done;
te permet de boucler sur une commande que tu auras placer entre les ``, exemple :
Code:
for i in `psql -A -d mabase -c "select tablename from pg_tables WHERE schemaname = 'public"` do echo $i done
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
#5 Fri 01 July 2011 13:40
Re: [Postgis] Requette sql postgis
Salut,
En fait j'ai une autre approche que Yves. Je fait du SQL qui génère du SQL en concaténant.
Code:
select 'ALTER TABLE public.'||tablename||'DROP COLUMN colonne1,colonne2;' from pg_tables WHERE schemaname = 'public'
Ensuite, je sélectionne les résultats (les nouvelles requêtes générées), je les copie/colle pour les exécuter.
Personnellement, je trouve que ça m'évite d'avoir à jongler entre bash/DOS et pgadmin III si le besoin est ponctuel. Dans le cas où ces commandes seraient récurrentes, j'opterais au contraire pour l'option de Yves.
ThomasG
Hors ligne
#6 Fri 01 July 2011 16:02
- bap
- Juste Inscrit !
- Date d'inscription: 1 Jul 2011
- Messages: 3
Re: [Postgis] Requette sql postgis
// ok cette dernière marche
Dernière modification par bap (Tue 05 July 2011 17:21)
Hors ligne