oracleでユーザー配下に存在する全てのテーブルのデータを削除する方法

Oracleユーザーが所有する全てのテーブルのデータを削除するには、以下の2つの方法があります。

  1. TRUNCATEコマンドを使用:TRUNCATEコマンドはテーブル内のすべてのデータを高速に空にすることができますが、テーブルの構造と制約は保持されます。以下のPL/SQLスクリプトを使用してユーザーのすべてのテーブルを走査し、TRUNCATEコマンドを実行できます:
BEGIN
FOR c IN (SELECT table_name FROM all_tables WHERE owner = 'YOUR_USER')
LOOP
EXECUTE IMMEDIATE 'TRUNCATE TABLE ' || c.table_name;
END LOOP;
END;
/

上記のスクリプト中の YOUR_USER をテーブルデータをクリアするユーザーに置き換えてください。

  1. DELETEコマンドを使用する: DELETEコマンドは、表のすべての行を削除して表データを空にすることができます。次のPL/SQLスクリプトを使用して、ユーザーが所有するすべての表をループ処理してDELETEコマンドを実行できます。
BEGIN
FOR c IN (SELECT table_name FROM all_tables WHERE owner = 'YOUR_USER')
LOOP
EXECUTE IMMEDIATE 'DELETE FROM ' || c.table_name;
END LOOP;
END;
/

同様に、上記のスクリプトの YOUR_USER を、テーブルのデータを消去するユーザーに置き換えてください。

どちらの方法でもTRUNCATE または DELETE コマンドを実行する十分な権限が必要です。慎重に行い、正しい環境で使用し、万一に備えてデータをバックアップするようにしてください。

bannerAds