Oracleでテーブルを一括で削除する方法
データをインポートするときにテーブル内にデータがあるとややこしくなるので、事前にテーブルの削除またはデータの削除が必要になります。
1つずつ消してもいいのですが手間がかかるので他の方法を探していたら動的SQLなるものを見つけたのでそれを参考に一括削除SQLを作ってみました。
systemでログインしdba_usersのownerで絞ってもいいのですが、他のテーブルが消えたら恐ろしいので各ユーザー毎に削除する形を取りました。
削除するテーブルのあるユーザーでログインしてください。
set serveroutput on size 10000; begin for cur in (select table_name from user_tables) loop dbms_output.put_line(cur.table_name); execute immediate 'drop table ' || cur.table_name || ' cascade constraints'; end loop; end; /
#追記 2012/06/26
インポート時にシーケンスがあれば削除する必要があるので追記しておきます。
シーケンスを一括で削除するには次のコードを実行します。
set serveroutput on size 10000; begin for cur in (select sequence_name from user_sequences) loop dbms_output.put_line(cur.sequence_name); execute immediate 'drop sequence ' || cur.sequence_name; end loop; end; /
一応、削除対象のテーブル名を表示するように書いています。
一括で削除されるので本番DBをつついてないかなど念入りにチェックしてから実行してください。
プロとしてのOracle PL/SQL入門 改訂版 | |
アシスト教育部 ソフトバンククリエイティブ 2010-03-18 売り上げランキング : 31236 Amazonで詳しく見る 関連商品 プロとしてのOracleアーキテクチャ入門 Oracle現場主義 プロとしてのSQLチューニング入門 プロとしてのOracle入門 Oracle現場主義 プロとしてのOracle運用管理入門 プロとしてのデータモデリング入門 (Oracle現場主義) |