私はpostgresqlを使用しており、スキーマに存在するすべてのテーブルを削除する必要があります。コマンドプロンプトから削除するにはどうすればよいですか。
_DROP SCHEMA
_のCASCADE
オプションを使用したい。 ドキュメント から:
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ターミナルにコピーします。コマンドはコメント化されていることに注意してください。