postgres wie man die gesamte Tabelle in einem Schema mit dem Befehl

löscht Ich verwende postgresql und muss alle Tabellen löschen, die im Schema vorhanden sind. Wie kann ich an der Eingabeaufforderung löschen?

Antwort

Sie möchten die CASCADE Option von DROP SCHEMA. Aus der Dokumentation :

CASCADE – Löschen Sie automatisch Objekte (Tabellen, Funktionen usw.), die im Schema enthalten sind, und alle Objekte, die von diesen Objekten abhängen

VORSICHT – Betonung über meiner.

Natürlich müssen Sie das Schema anschließend neu erstellen.

Um einfach alle Tabellen im aktuellen Schema zu löschen, können Sie dieses Skript verwenden:

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 Sie WHERE schemaname = current_schema() wenn Sie alle Tabellen in einem anderen Schema ablegen möchten.

Kommentare

  • wenn ich DROP SCHEMA Schemaname CASCADE verwende; Fehler FEHLER: Syntaxfehler bei oder in der Nähe von " DROP " Zeile 2: DROP-Schema
  • LINE 2? Was ' ist in Zeile 1?
  • Eigentlich muss ich alle ta löschen bles und sein abhängiges Objekt. aber es sollte nicht Prozedur und alle löschen ..
  • aber wenn ich den Befehl drop schema benutze, löscht es auch das Schema. In meinem Fall sollte ein Schema vorhanden sein.
  • @asalthangam Antwort aktualisiert

Antwort

yourdb=# DROP SCHEMA *schema_name* CASCADE; 

(funktioniert, wurde gerade mit Postgresql 9.6.3 getestet, funktioniert möglicherweise nicht mit früheren Versionen)

Antwort

@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 psql terminal. Beachten Sie, dass die Befehle auskommentiert sind.

Kommentare

  • Die Frage betraf das Löschen von Tabellen in einem bestimmten Schema, glaube ich.

Antwort

Wenn Sie nur einen wirklich einfachen Weg suchen, 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

Kommentare

  • Die Frage ist Postgres, nicht Oracle.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.