コマンド

postgresqlを使用して、スキーマ内のすべてのテーブルを削除する方法をpostgresします。スキーマに存在するすべてのテーブルを削除する必要があります。コマンドプロンプトから削除するにはどうすればよいですか。

回答

CASCADEDROP 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()すべてのテーブルを別のスキーマにドロップする場合。

コメント

  • DROPSCHEMAスキーマ名CASCADEを使用すると;エラーエラー:" DROP "での構文エラー2行目:DROPスキーマ
  • LINE 2?1行目の'は何ですか?
  • 実際にはすべてのtaを削除する必要がありますblesとその依存オブジェクト。ただし、プロシージャとすべてを削除するべきではありません。
  • しかし、drop schemaコマンドを使用すると、スキーマも削除されます。私の場合、スキーマが存在する必要があります
  • @asalthangam回答が更新されました

回答

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ではありません。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です