PostgreSQL
La base de données la plus sophistiquée au monde.

Ouverture de session

Navigation

Contactez-nous

Administration du site :
"equipe chez postgresqlfr point org"

Contact presse :
"fr chez postgresql point org"

Contact association :
"bureau chez postgresqlfr point org"

Questions PostgreSQL :
 IRC :
  serveur irc.freenode.net
  canal #postgresqlfr

Recherche

Accéder aux archives

« Octobre 2008  
Lun Mar Mer Jeu Ven Sam Dim
  2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31  

Syndication

Flux XML

Sondage

Quelle est la version de PostgreSQL la plus répandue sur vos serveurs ?
8.3
10%
8.2
42%
8.1
40%
8.0
2%
7.4
6%
7.3 ou antérieure
0%
Nombre de votes: 48

Suppression de toutes les fonction d'un schéma

Technique - général | Suppression de toutes les fonction d'un schéma

Par jxemo le 19/04/2007 - 19:19

Bonjour,

Je cherche un moyen de supprimer toutes les fonctions utilisateurs d'un schéma donné avec une commande SQL.
Le but est de trouver un moyen de créer les commandes "DROP FUNCTION" qui vont bien.

Comment feriez vous ?

Options d'affichage des commentaires

Sélectionnez la méthode d'affichage des commentaires que vous préférez, puis cliquez sur "Sauvegarder les paramètres" pour activer vos changements.

\o fichier.txt \df schema_ut

sparky/ = 20 Avril, 2007 - 10:50

\o fichier.txt
\df schema_utilisateur.*
\o

Traitement perl du fichier .txt

MĂ©thode plus rapide

psql BASE_DE_DONNE -t -c "\df SCHEMA_UTILISATEUR.*"|awk -F '|' '{if (NF > 0 ) print "drop function "$2;}'


Retour d'expérience

jxemo/ = 21 Mai, 2007 - 15:04

Bonjour,

Voici le résultat de ma recherche.
L'idée de sparky, même si elle ne marchait pas m'a mis sur la bonne voie et je l'en remercie.

Dans le cas cité précédemment, on se retrouve avec une liste d'erreur "Fonction inconnue". A cause de la surcharge des fonctions (qui apporte plus de soucis que de solutions) il faut préciser le type des arguments en entrée.

J'essayais de faire la même chose avec les tables du catalogue système, mais j'avais des problèmes pour relier les noms des paramètres aux noms de fonction de façon simple. \df m'a permis de faire ce lien.

La commande est donc :
psql -U MON_USER MA_BASE -t -P format=unaligned -c "\df MON_SCHEMA.*"|awk -F '|' '{if (NF > 0 ) print "drop function "$2"("$4") cascade;";}' | psql -U MON_USER MA_BASE

Le cascade me permet de gérer la présence d'une fonction d'agrégation.

Il est utile pour le bon fonctionnement de la commande de mettre le mot de passe de l'utilisateur dans la variable d'environnement PGPASSWORD.


© PostgreSQLFr, tous droits rĂ©servĂ©s.
Site déclaré à la CNIL sous le numéro 1074678, conformément à la Loi en vigueur.