Dienstag, Juni 29, 2010

In Oracle alle Tabellen einer SQL-Datenbank auf einmal löschen

Heute habe ich erfolgreich versucht in einer Oracle SQL-Datenbank alle Tabellen zu löschen und habe ein ganze weile gegoogelt, bevor ich eine recht einfache Lösung gefunden habe:

SELECT 'DROP TABLE ' || table_name || ' CASCADE CONSTRAINTS;' FROM user_tables;


Das Ergebnis ist eine Tabelle von Strings, die genau das macht was man möchtet - nämlich eine Tabelle nach der anderne löschen.
Beispielantwort der Abfrage:
DROP TABLE TESTTABELLE1 CASCADE CONSTRAINTS;
DROP TABLE TESTTABELLE2 CASCADE CONSTRAINTS;
DROP TABLE TESTTABELLE3 CASCADE CONSTRAINTS;

Per Copy&Paste in die Konsole und ausführen und erledigt.
Vielleicht gibt es auch noch eine weniger plumpe Lösung - aber immerhin funktionierts :)

Die "||" verknüpfen die 3 Teilstrings. "DROP TABLE", "TESTTABELLE1", " CASCADE CONSTRAINTS;" zu "DROP TABLE TESTTABELLE1 CASCADE CONSTRAINTS;"

In diesem Sinne "Fire&Forget!"

via Jared Blitzstein

Keine Kommentare: