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

Pour sécuriser votre compte sur les forums du GeoRezo, nous demandons de changer votre mot de passe.

Vous allez recevoir un message pour effectuer ce changement de mot de passe.

Merci de bien respecter les règles préconisées.

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

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: 9828
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: 944
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

Powered by FluxBB