Wie kann ich alle Tabellen löschen, deren Namen mit einer bestimmten Zeichenfolge beginnen?
Ich denke, dass dies mit etwas dynamischem SQL und den INFORMATION_SCHEMA
Tabellen möglich ist.
sql
sql-server
dynamic-sql
Blorgbeard ist raus
quelle
quelle
close cmds; deallocate cmds
.Dadurch wird ein Skript generiert.
Hinzufügen einer Klausel, um das Vorhandensein einer Tabelle vor dem Löschen zu überprüfen:
quelle
WHERE TABLE_NAME LIKE 'em\_%' ESCAPE '\';
Dadurch erhalten Sie die Tabellen in der Reihenfolge der Fremdschlüssel und können einige der von SQL Server erstellten Tabellen nicht löschen. Der
t.Ordinal
Wert schneidet die Tabellen in Abhängigkeitsebenen.quelle
Unter Oracle XE funktioniert dies:
Oder wenn Sie die Einschränkungen entfernen und auch Speicherplatz freigeben möchten , verwenden Sie Folgendes:
Welches wird eine Reihe von
DROP TABLE cascade constraints PURGE
Aussagen generieren ...Zur
VIEWS
Verwendung:quelle
Ich habe diesen Beitrag gesehen, als ich nach einer MySQL-Anweisung gesucht habe, um alle WordPress-Tabellen basierend auf @Xenph Yan zu löschen. Hier ist, was ich letztendlich getan habe:
Dadurch erhalten Sie die Drop-Abfragen für alle Tabellen, die mit wp_ beginnen
quelle
Hier ist meine Lösung:
Und natürlich müssen Sie durch
TABLE_PREFIX_GOES_HERE
Ihr Präfix ersetzen .quelle
Bearbeiten:
sp_MSforeachtable ist nicht dokumentiert und daher nicht für die Produktion geeignet, da sein Verhalten je nach MS_SQL-Version variieren kann.
quelle
quelle
Xenph Yans Antwort war viel sauberer als meine, aber hier ist meine trotzdem.
Wechseln
tableName
Sie einfach zu den Zeichen, mit denen Sie suchen möchten.quelle
Das hat bei mir funktioniert.
quelle
- Test ist der Tabellenname
quelle
quelle
Ich musste eine leichte Ableitung von Xenph Yans Antwort vornehmen, die ich vermute, weil ich Tabellen hatte, die nicht im Standardschema waren.
quelle
Bei temporären Tabellen möchten Sie es möglicherweise versuchen
quelle