Jak mogę usunąć wszystkie tabele, których nazwy zaczynają się od podanego ciągu?
Myślę, że można to zrobić za pomocą dynamicznego SQL i INFORMATION_SCHEMA
tabel.
sql
sql-server
dynamic-sql
Blorgbeard wyszedł
źródło
źródło
close cmds; deallocate cmds
.Spowoduje to wygenerowanie skryptu.
Dodanie klauzuli sprawdzającej istnienie tabeli przed usunięciem:
źródło
WHERE TABLE_NAME LIKE 'em\_%' ESCAPE '\';
Pozwoli to uzyskać tabele w kolejności klucza obcego i uniknąć porzucenia niektórych tabel utworzonych przez SQL Server.
t.Ordinal
Wartość będzie kroić tabele na warstwy zależności.źródło
W Oracle XE to działa:
Lub jeśli chcesz usunąć ograniczenia i zwolnić miejsce , użyj tego:
Co wygeneruje zestaw
DROP TABLE cascade constraints PURGE
instrukcji ...W
VIEWS
tym celu:źródło
Widziałem ten post, gdy szukałem instrukcji mysql, aby usunąć wszystkie tabele WordPress oparte na @Xenph Yan, oto co ostatecznie zrobiłem:
to da ci zestaw zapytań upuszczających dla wszystkich tabel zaczynających się od wp_
źródło
Oto moje rozwiązanie:
I oczywiście musisz zastąpić
TABLE_PREFIX_GOES_HERE
przedrostkiem.źródło
Edytować:
sp_MSforeachtable jest nieudokumentowane, dlatego nie nadaje się do produkcji, ponieważ jego zachowanie może się różnić w zależności od wersji MS_SQL.
źródło
źródło
Odpowiedź Xenpha Yana była znacznie czystsza niż moja, ale tutaj jest moja.
Po prostu zmień
tableName
na znaki, które chcesz wyszukiwać.źródło
To zadziałało dla mnie.
źródło
- Test to nazwa tabeli
źródło
źródło
Podejrzewam, że musiałem wykonać niewielkie wyprowadzenie z odpowiedzi Xenpha Yana, ponieważ miałem tabele nie w domyślnym schemacie.
źródło
W przypadku tabel tymczasowych możesz spróbować
źródło