postgresqlを使用して、スキーマ内のすべてのテーブルを削除する方法をpostgresします。スキーマに存在するすべてのテーブルを削除する必要があります。コマンドプロンプトから削除するにはどうすればよいですか。
回答
CASCADE
DROP SCHEMA
のdiv>オプション。 ドキュメントから:
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()
すべてのテーブルを別のスキーマにドロップする場合。
コメント
回答
yourdb=# DROP SCHEMA *schema_name* CASCADE;
(Postgresql 9.6.3でテストされたばかりで、以前のリリースでは機能しない可能性があります)
回答
@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
コメント
- 問題はPostgresであり、Oracleではありません。
LINE 2
?1行目の'は何ですか?