Mysql中如何清空整个数据库里面的数据。

GIS_Cloud 2011-10-14 10:32:40
只是删除数据库里面所有表的数据,保留数据库里面的表结构和其他信息。
...全文
27391 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
GIS_Cloud 2011-10-17
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 houlianxue 的回复:]
引用 9 楼 nicenight 的回复:
弄一个 sp 的:

SQL code

drop procedure if exists del_all_tb;
delimiter $$
create procedure del_all_tb(db char(20))
begin
declare done int default 0;
declare tb char(100);
……
[/Quote]

有道理,还是用先导出表结构,再删除数据库,再导入
雨天要吃饭 2011-10-16
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 nicenight 的回复:]
弄一个 sp 的:

SQL code

drop procedure if exists del_all_tb;
delimiter $$
create procedure del_all_tb(db char(20))
begin
declare done int default 0;
declare tb char(100);
declare cu……
[/Quote]

这样写 不需要主要表的删除顺序吗,尤其主外键关联的表
GIS_Cloud 2011-10-14
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 acmain_chm 的回复:]
MYSQLDUMP 只导出表结构。然后DROP DATABASE,再CREATE DATABASE 并执行导出的脚本重新创建表。
[/Quote]

我用你说的实现了。
但是三楼说的方法,我改了下,在我自己的电脑上运行时,提示我,此时不应有%%J,代码被我改了下,是这样的。
FOR /f %%J IN ('mysql -u admin -p admin -N -e "use test;show tables";') do (mysql -u admin -p admin -e "truncate test.%%J")
zuoxingyu 2011-10-14
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 acmain_chm 的回复:]
MYSQLDUMP 只导出表结构。然后DROP DATABASE,再CREATE DATABASE 并执行导出的脚本重新创建表。
[/Quote]

我想到的也是这个办法。
ACMAIN_CHM 2011-10-14
  • 打赏
  • 举报
回复
MYSQLDUMP 只导出表结构。然后DROP DATABASE,再CREATE DATABASE 并执行导出的脚本重新创建表。
WWWWA 2011-10-14
  • 打赏
  • 举报
回复
方法多种:
1、用SP删除;
2、取得所有表名,在EXCEL下生成TRUNCATE 表名;
3、用脚本,
windows:
FOR /f %%J IN ('d:\MYSQL55\BIN\mysql -uroot -p123 -N -e "use aa1;show tables";') do (d:\MYSQL55\BIN\mysql -uroot -p123 -e "truncate aa1.%%J")
GIS_Cloud 2011-10-14
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 duzq1985 的回复:]
只能通过脚本吧,查出数据库下所有的表,然后逐个truncate或者delete
[/Quote]

这样就是一个个的手动删了,有没有智能点的?
duzq1985 2011-10-14
  • 打赏
  • 举报
回复
只能通过脚本吧,查出数据库下所有的表,然后逐个truncate或者delete
nicenight 2011-10-14
  • 打赏
  • 举报
回复
弄一个 sp 的:

drop procedure if exists del_all_tb;
delimiter $$
create procedure del_all_tb(db char(20))
begin
declare done int default 0;
declare tb char(100);
declare cur cursor for select table_name from infoRmation_schema.tables where table_schema = db;
declare continue handler for not found set done = 1;
open cur;

repeat
fetch cur into tb;
set @sql := concat("truncate ", tb, ";");
prepare stmt from @sql;
execute stmt;
deallocate prepare stmt;
until done end repeat;
close cur;
end $$
delimiter ;
call del_all_tb("数据库名");
drop procedure if exists del_all_tb;
wwwwb 2011-10-14
  • 打赏
  • 举报
回复
FOR /f %%J IN ('mysql -u admin -p admin -N -e "use test;show tables";') do (mysql -u

admin -p admind -e "truncate test.%%J")

注意在一行中,估计你换行了,测试没有问题
rucypli 2011-10-14
  • 打赏
  • 举报
回复
1 mysqldump -d导出表结构

2 删除重建数据库

3 导入表结构

56,678

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧