回答:
のCASCADE
オプションを使用したいDROP SCHEMA
。ドキュメントから:
CASCADE
-スキーマに含まれているオブジェクト(テーブル、関数など)を自動的にドロップし、次にそれらのオブジェクトに依存するすべてのオブジェクトをドロップします
注意してください-私よりも強調します。
もちろん、後でスキーマを再作成する必要があります。
現在のスキーマのすべてのテーブルを削除するには、次のスクリプトを使用できます。
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 $$;
WHERE schemaname = current_schema()
すべてのテーブルを別のスキーマにドロップする場合は変更してください。
LINE 2
?1行目は何ですか。
@Techno Savvy
postgres構文を使用してテーブルを削除します。
select '-- drop table ' || tablename || ' cascade;' from pg_tables
where tablename not like 'pg%' and tablename not like 'sql%';
結果のテキストをsqlスクリプトまたはpsqlターミナルにコピーします。コマンドはコメント化されていることに注意してください。
これを行うための本当に簡単な方法が必要な場合は、これまでに使用したスクリプトを示します。
select 'drop table '||table_name||' cascade constraints;' from user_tables;
これにより、スキーマ内のすべてのテーブルの一連のドロップコマンドが出力されます。このクエリの結果をスプールして実行します。
同様に、テーブルより多くをクリアしたい場合は、ニーズに合わせて以下を編集できます
select 'drop '||object_type||' '|| object_name || ';' from user_objects where object_type in ('VIEW','PACKAGE','SEQUENCE', 'PROCEDURE', 'FUNCTION', 'INDEX')
ソース:https : //forums.oracle.com/forums/thread.jspa?threadID=614090