如何在不删除数据库中的任何表的情况下清空phpMyAdmin中数据库中所有表的内容?
由于我在开发过程中每小时都会这样做几次,所以我不想每次都在所有60多个表上单独点击“清空”。
答案 0 :(得分:19)
恕我直言,最简单的解决方案是:
答案 1 :(得分:7)
创建一个包含多个DELETE语句的SQL脚本(每个表一个)并执行它。
进入phpMyAdmin并选择所需的数据库。选择SQL选项卡并将SQL脚本粘贴到窗口中。点击Go。
请看这里:
答案 2 :(得分:4)
我们实际上可以通过phpMyAdmin截断所有表数据!
在phpMyAdmin中,您可以按照以下步骤执行此操作:
1)选择你的数据库并以这种方式进行导出操作:
选择自定义导出方法
通过这一步,phpMyAdmin帮助我们创建一个包含所有表的完整列表的SQL脚本
3)执行导入操作,通过此脚本逐个删除和创建每个空白表
答案 3 :(得分:3)
你可以从这个查询开始
SELECT T.*
FROM INFORMATION_SCHEMA.tables T
WHERE T.table_type = 'BASE TABLE'
迭代这些结果,构建一个动态SQL字符串,调整为'DELETE FROM'+ T.Table_Name
答案 4 :(得分:2)
不幸的是,没有TRUNCATE DATABASE
或等价物。话虽如此,您可能会使用某种存储过程来遍历数据库中的所有表并截断它们。 I found something of that kind here,但我不知道它是否有效。 (您也应该阅读评论讨论)
答案 5 :(得分:2)
TRUNCATE TABLE
语句将完全清空表(MySql 3.23及更高版本)。
您可以创建可以为特定数据库重用的脚本。 它不是通用的,但每次你想要从一个新的数据库开始时,你就不会创建新的数据库+登录。
以下是如何自己创建脚本:
在您的webbrowser中,转到phpMyAdmin并选择数据库。单击SQL选项卡并执行'SHOW TABLES'
。
选择适合打印机的格式并将内容复制到文本编辑器。
现在,对于每个表名,您可以采用以下格式重写它:
TRUNCATE TABLE <tablename>;
注意:如果您有许多表
,则可以使用正则表达式答案 6 :(得分:1)
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 #
答案 7 :(得分:1)
您可以像这样导出表结构:
mysqldump -u root -p --no-data mydb > backup_info.sql
然后删除整个数据库,重新创建它并从备份中恢复。
足以编写整个脚本。
答案 8 :(得分:1)
您可以轻松删除phpmyadmin功能中的所有数据。也许这个功能在2010年这个问题发布时并不存在,但我觉得所有初学者都可以参考这个。
答案 9 :(得分:0)
实际上,更深入地写了这个:
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 DROP TABLE删除现有表