Vous n'êtes pas identifié(e).
- Contributions : Récentes | Sans réponse
Pages : 1
#1 02/02/2012 16:20:15
- marc.stx
- Membre
Supression de tables
Bonjour,
Ayant du mal à comprendre le pl/pgsql, je fais appel à votre aide.
Comment faire pour supprimer dans une base toutes les tables qui commencent par une lettre donnée ?
CREATE OR REPLACE FUNCTION drop_table...
En vous remerciant !
Marc
PS > modérateur : je me suis trompé de forum à placer dans pl/pgsql
Dernière modification par marc.stx (02/02/2012 16:49:00)
Hors ligne
#2 03/02/2012 08:49:20
- gleu
- Administrateur
Re : Supression de tables
Que vous ayez du mal à comprendre le PL/pgsql, je peux le comprendre mais je suppose que vous avez commencé à écrire la procédure stockée et que ce que vous avez écrit ne fonctionne pas. Donc commencez par montrer ce que vous avez fait. Et on continuera à partir de ça.
Guillaume.
Hors ligne
#3 03/02/2012 19:40:32
- marc.stx
- Membre
Re : Supression de tables
Hélas je n'ai encore rien fait, je ne comprends vraiment rien à pl/sql !
Je suppose juste que la commande que je veux réaliser passe par une fonction (ou peut être par un trigger).
Je m'explique : j'ai créé des tables à la volée à l'aide d'un ETL, mais j'ai fait une erreur de configuration... et 400 tables ont été intégrées d'un seul coup dans ma base. Ces tables ayant le même préfixe, j'aimerai pouvoir les supprimer toutes en même temps. Si cela est possible.
Hors ligne
#4 06/02/2012 22:55:19
- gleu
- Administrateur
Re : Supression de tables
Déjà, ce n'est pas pl/sql, mais pl/pgsql.
Si le préfixe est connu, il suffit de faire ça :
DO LANGUAGE plpgsql
DECLARE
s text;
t text;
BEGIN
FOR s, t IN SELECT schemaname, relname FROM pg_class WHERE relname IN 'prefixe_ici%'
LOOP
PERFORM 'DROP TABLE '||quote_ident(s)||'.'||quote_ident(t);
END LOOP;
END;
Pas testé, juste une aide de départ. À vous de tester derrière (sur une base de TESTS) pour vérifier que tout va bien. Et essayer de comprendre le code avant de l'exécuter pour savoir quoi modifier (le préfixe). Et le corriger le cas échéant.
Guillaume.
Hors ligne
Pages : 1