Wie lösche ich die Daten von allen meinen Tabellen in ORACLE 10g
Ich habe ein ORACLE-schema mit Hunderten von Tabellen. Ich möchte Sie zum löschen der Daten aus allen Tabellen (aber nicht wollen, um die DROP-Tische).
Gibt es eine einfache Möglichkeit, dies zu tun oder muss ich schreiben Sie ein SQL-Skript ruft alle Tabellennamen und führt die TRUNCATE-Befehl auf jedem ?
Möchte ich zum löschen der Daten mit Hilfe von Befehlen in einer SQL-Plus session.
Du musst angemeldet sein, um einen Kommentar abzugeben.
War ich bei dieser Suche zu.
Scheint, wie Sie tun müssen gehen durch alle Tabellen-Namen.
Haben Sie gesehen,diese? Scheint den trick tun.
Wenn du irgendwelche Einschränkungen der referenziellen Integrität (Fremdschlüssel) und truncate wird nicht funktionieren; Sie kann nicht abgeschnitten der übergeordneten Tabelle, wenn alle untergeordneten Tabellen vorhanden sind, auch wenn die Kinder leer sind.
Den folgenden PL/SQL sollte (es ist ungetestet, aber ich habe einen ähnlichen code wie in der Vergangenheit) Durchlaufen der Tabellen, deaktivieren alle Fremdschlüssel, Sie abzuschneiden, dann re-Aktivierung aller Fremdschlüssel. Wenn eine Tabelle in einem anderen schema verfügt über eine RI-integritätsregel gegen Ihren Tisch, das Skript schlägt fehl.
Wahrscheinlich der einfachste Weg, Exportiere das schema ohne Daten, dann löschen Sie einen re-import.
Ich hatte dies kürzlich und schrieb eine gespeicherte Prozedur, die Sie ausführen können, über:
exec sp_truncate;
. Die meisten der code basiert off dieser: Antwort auf die Deaktivierung von EinschränkungenSetzen die details aus der OTN Discussion Forums: abschneiden mehreren Tabellen mit einer Abfrage zusammenfassen thread in einem SQL-Skript gibt die folgende, die ausgeführt werden können in einer SQL-Plus session: