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Ă© ?

#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: 403

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

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

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 wink

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

ThomasG
Membre
Lieu: Nantes
Date d'inscription: 9 Sep 2005
Messages: 954
Site web

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

 

Pied de page des forums

Copyright Association GeoRezo