Ich verwende postgresql und muss alle Tabellen löschen, die im Schema vorhanden sind. Wie kann ich an der Eingabeaufforderung löschen?
Ich verwende postgresql und muss alle Tabellen löschen, die im Schema vorhanden sind. Wie kann ich an der Eingabeaufforderung löschen?
Antworten:
Sie möchten die CASCADE
Option von verwenden DROP SCHEMA
. Aus der Dokumentation :
CASCADE
- Löschen Sie automatisch Objekte (Tabellen, Funktionen usw.), die im Schema enthalten sind, und wiederum alle Objekte, die von diesen Objekten abhängen
Sei vorsichtig - Betonung über meiner.
Natürlich müssen Sie das Schema anschließend neu erstellen.
Mit diesem Skript können Sie einfach alle Tabellen im aktuellen Schema löschen:
DO $$ DECLARE
tabname RECORD;
BEGIN
FOR tabname IN (SELECT tablename
FROM pg_tables
WHERE schemaname = current_schema())
LOOP
EXECUTE 'DROP TABLE IF EXISTS ' || quote_ident(tabname.tablename) || ' CASCADE';
END LOOP;
END $$;
Ändern WHERE schemaname = current_schema()
Sie, ob Sie alle Tabellen in einem anderen Schema ablegen möchten.
LINE 2
? Was steht in Zeile 1?
@ Techno Savvy
Löschen Sie Tabellen mit der Postgres-Syntax:
select '-- drop table ' || tablename || ' cascade;' from pg_tables
where tablename not like 'pg%' and tablename not like 'sql%';
Kopieren Sie den resultierenden Text in ein SQL-Skript oder ein Psql-Terminal. Beachten Sie, dass die Befehle auskommentiert sind.
Wenn Sie nur einen wirklich einfachen Weg wollen, dies zu tun. Hier ist ein Skript, das ich in der Vergangenheit verwendet habe
select 'drop table '||table_name||' cascade constraints;' from user_tables;
Dadurch wird eine Reihe von Drop-Befehlen für alle Tabellen im Schema ausgedruckt. Spoolen Sie das Ergebnis dieser Abfrage und führen Sie es aus.
Wenn Sie mehr als nur Tabellen löschen möchten, können Sie Folgendes entsprechend Ihren Anforderungen bearbeiten
select 'drop '||object_type||' '|| object_name || ';' from user_objects where object_type in ('VIEW','PACKAGE','SEQUENCE', 'PROCEDURE', 'FUNCTION', 'INDEX')
Quelle: https://forums.oracle.com/forums/thread.jspa?threadID=614090