dポイントプレゼントキャンペーン実施中!

さきほどと似たような質問ですみません。

SQLコマンドであるデータベースの全テーブルを削除したいんですが、
truncate一文ですませる方法はないでしょうか。

それとも、一行ずつ
truncate tableA
truncate tableB
....


とやっていくしかないのでしょうか?

A 回答 (3件)

declare


CURSOR CUR1 IS SELECT * FROM USER_TABLES;
begin
FOR CUR_RECORD IN CUR1 LOOP
EXECUTE IMMEDIATE 'TRUNCATE TABLE "'||CUR_RECORD.TABLE_NAME||'"';
END LOOP;
end;
exit
/
というPL/SQLスクリプトを投入すれば、自己所有のテーブルは空に出来ます。
有無を言わさずに空になるので、気を付けてくださいね。
    • good
    • 1
この回答へのお礼

ありがとうございます!
これはとても助かります

一行ずつやらねばならないものと思い込み、無駄な質問を追加してしまったので、1日たったら削除するようにします。
すいませんでした。

お礼日時:2006/11/24 16:55

Oracleであれば、私は以下のようにしてます。


例えばtrn.sqlっていうtruncate文の集まったファイルを作成して実行してます。
余計なものが出力されないようにsetを使ってますが、
足りないかもしれませんので詳細はマニュアルを参考にして下さい。

spool trn.sql
set lines 1000
set pages 0
set trimspool on
set feedback off

select 'truncate table ' || table_name || ';' from user_tables;
spool off

@trn
    • good
    • 1

テーブルごとに truncate するしかないです。



SQLをテキストファイルに書き込んでしまったらどうですか?

どんなRDBMS環境かわからないので回答しにくいのですが
spool table.log
select table_name from user_tables;
spool off

としておいて、table.log 中の テーブル名を利用するとか・・・。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

関連するカテゴリからQ&Aを探す


このQ&Aを見た人がよく見るQ&A