データベース内のテーブルを削除せずに、phpMyAdminでデータベース内のすべてのテーブルの内容を空にするにはどうすればよいですか?
開発中は1時間に数回これを行うので、60以上のテーブルすべてで毎回個別に[空]をクリックしたくはありません。
複数のDELETEステートメント(テーブルごとに1つ)を使用してSQLスクリプトを作成し、実行します。
PhpMyAdminにアクセスして、必要なデータベースを選択します。 [SQL]タブを選択し、SQLスクリプトをウィンドウに貼り付けます。 Goを押します。
ここも見てください:
私見の最も簡単な解決策は次のとおりです。
実際には、phpMyAdminによってすべてのテーブルデータを切り捨てることができます。
PhpMyAdminでは、次の手順で実行できます。
1)u DBを選択し、次のようにエクスポート操作を実行します。
カスタムエクスポート方法を選択します
このステップにより、phpMyAdminは、すべてのテーブルの完全なリストの1つのSQLスクリプトを作成するのに役立ちます
3)インポート操作を実行して、このスクリプトで各空白テーブルを1つずつ削除および作成します
このクエリから始めることができます
SELECT T.*
FROM INFORMATION_SCHEMA.tables T
WHERE T.table_type = 'BASE TABLE'
そして、これらの結果を繰り返し処理して、「DELETEFROM」+ T.Table_Nameの調整に合わせて動的SQL文字列を作成します。
残念ながら、TRUNCATE DATABASE
または同等のものはありません。そうは言っても、データベース内のすべてのテーブルを調べてそれらを切り捨てる、ある種のストアドプロシージャを使用できる可能性があります。 ここでそのようなものを見つけました 、しかしそれが機能するかどうかはわかりません。 (おそらくコメントの議論も読むべきです)
TRUNCATE TABLE
ステートメントはテーブルを完全に空にします(MySql 3.23以降)。
特定のデータベースで再利用できるスクリプトを作成できます。これは一般的ではありませんが、新しいデータベースを作成する必要がなく、新しいデータベースで開始するたびにログインする必要がありません。
スクリプトを自分で作成する方法は次のとおりです。WebブラウザでphpMyAdminに移動し、データベースを選択します。 [SQL]タブをクリックして、'SHOW TABLES'
を実行します。印刷用フォーマットを選択し、内容をテキストエディタにコピーします。
次に、テーブル名ごとに、次の形式で書き直します。
TRUNCATE TABLE <tablename>;
注:テーブルが多数ある場合は、正規表現を使用できます
Phpmyadmin関数からすべてのデータを簡単に削除できます。この質問が投稿された2010年にはこの機能が存在しなかったのかもしれませんが、初心者なら誰でも参照できると思います。
drop procedure if exists truncate_tables;
delimiter #
create procedure truncate_tables()
begin
declare tab_name varchar(64);
declare done tinyint unsigned default 0;
declare table_cur cursor for select t.table_name
from
information_schema.schemata s
inner join information_schema.tables t on s.schema_name = t.table_schema
where
s.schema_name = database() and t.table_type = 'BASE TABLE';
declare continue handler for not found set done = 1;
open table_cur;
repeat
fetch table_cur into tab_name;
set @cmd = concat('truncate table ', tab_name);
prepare stmt from @cmd;
execute stmt;
until done end repeat;
close table_cur;
end #
次のようにのみテーブル構造をエクスポートできます。
mysqldump -u root -p --no-data mydb > backup_info.sql
次に、データベース全体を削除して再作成し、バックアップから復元します。
すべてをスクリプト化するのに十分簡単です。
実際、もっと深く行き、これを書いた:
SET @command:='';
SELECT @command:=CONCAT(@command, 'TRUNCATE TABLE ',T.TABLE_NAME,';')
FROM INFORMATION_SCHEMA.tables T
WHERE T.table_type = 'BASE TABLE' AND T.table_schema='YOUR_TABLE_SCHEMA';
PREPARE bye_world FROM @command;
EXECUTE bye_world;
DEALLOCATE PREPARE bye_world;
提供されたスキーマYOUR_TABLE_SCHEMA
からすべてのテーブル名を選択し、それらを@command
ユーザー変数に入れて、次のようにそれぞれのクエリを形成します。TRUNCATE TABLE TABLE_NAME;
次に、選択したステートメントを準備して実行します。クエリの前にユーザー変数を宣言する必要があることに注意してください。そうしないと、0
になり、ステートメントが台無しになります。
MySQL DROPTABLEを使用して既存のテーブルを削除する