déposer toutes les tables partage le même préfixe dans postgres
Je voudrais supprimer toutes les tables de partage le même préfixe ('supenh_agk') à partir de la même base de données, à l'aide d'une commande sql/requêtes.
Double Possible de Comment faire pour supprimer plusieurs tables PostgreSQL à l'aide d'un joker
OriginalL'auteur Roy | 2014-12-22
Vous devez vous connecter pour publier un commentaire.
Pour ce faire, dans un de commande vous avez besoin de SQL dynamique avec
EXECUTE
dans undéclaration (ou de fonction):
Cela comprend des tables de tous schémas de l'utilisateur courant a accès. J'ai exclus du système de schémas de sécurité.
Si vous n'avez pas échapper identifiants correctement le code ne fonctionne pas pour tout non-standard identificateur de qui nécessite une double citant.
En Plus, vous courez le risque de laisser injection SQL. Toutes les entrées utilisateur doit être effacé dans la dynamique de code qui inclut les identificateurs potentiellement fournis par les utilisateurs.
Potentiellement dangereux! Toutes ces tables sont tombé pour de bon. J'ai construit en sécurité. Inspecter l'généré des déclarations avant de les exécuter: commentaire
RAISE
et décommentez laEXECUTE
.Étroitement liés:
Sinon vous pouvez construire sur le catalogue de la table
pg_class
, qui fournit également leoid
de la table et est plus rapide:Catalogue du système ou des informations de schéma?
Comment
c.oid::regclass
défendre contre les injections SQL?Fonctionne très bien !! Merci Erwin.
OriginalL'auteur Erwin Brandstetter
Supposons que le préfixe est "sales_'
Étape 1: Obtenir tous les noms de table avec ce préfixe
Étape 2: Cliquez sur "Télécharger au format CSV".
Étape 3: Ouvrir le fichier dans un éditeur de texte et remplacez "sales_ avec ,les ventes
et " avec un espace
Étape 4:
DROP TABLE sales_regist, sales_name, sales_info, sales_somthing;
OriginalL'auteur Ryan Augustine
C'est commande sql server, vous pouvez essayer celui-ci, est-il travaillé dans postgres ou pas.
Cette requête wil générer le script sql pour supprimer
[MODIFIER]
a_horse_with_no_name:- + travaille également dans sql server 2008 pour concat
+ ne fonctionne pas dans postgres... (la question est autour de postgres). merci! Est-il possible d'utiliser 'exécuter' une commande en tant que partie de postgres requête? - donc, pour l'exécution de la résultante de script (la sortie de ce qui a été suggéré ci-dessus)?
ajouter cette table temp, et en boucle sur chaque ligne pour exécuter
OriginalL'auteur HaveNoDisplayName