首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何截断MySQL数据库中的所有表?

如何截断MySQL数据库中的所有表?
EN

Stack Overflow用户
提问于 2011-01-21 15:35:05
回答 2查看 8.2K关注 0票数 2

有没有办法截断特定MySQL数据库名称中的所有表,而不使用除SQL语言之外的任何其他语言?我的意思是没有linux shell脚本。(为什么?因为它将在windows、MacOSX和linux服务器上运行)。

问题是,客户端正在从控制面板网页的列表中选择数据库名称(将显示来自不同服务器*nix和windows的MySQL数据库),然后他会想要截断该数据库中的所有表(是的,这是web表单的主要任务)。

亚历克斯

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-01-21 16:02:54

好的,我自己解决了这个问题,下面是存储过程:)

代码语言:javascript
复制
BEGIN
    DECLARE done BOOLEAN DEFAULT FALSE; 
    DECLARE truncatestmnt TEXT; -- this is where the truncate statement will be retrieved from cursor

    -- This is the magic query that will bring all the table names from the database
    DECLARE c1 CURSOR FOR SELECT Concat('TRUNCATE TABLE ', TABLE_NAME) FROM INFORMATION_SCHEMA.TABLES WHERE INFORMATION_SCHEMA.TABLES.TABLE_SCHEMA = "@DatabaseName";
    DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = TRUE; 

    OPEN c1;

    c1_loop: LOOP
    FETCH c1 INTO truncatestmnt;
    IF `done` THEN LEAVE c1_loop; END IF;
        SET @x = truncatestmnt;
        PREPARE stm1 FROM @x;
        EXECUTE stm1;
    END LOOP c1_loop; 

    CLOSE c1;
END

我让它调用给定数据库中的所有表,如果给定数据库中的表没有可遵循的模式,这将会有所帮助。

因此,通过调用DECLARE c1 CURSOR FOR SELECT Concat('TRUNCATE TABLE ', TABLE_NAME) FROM INFORMATION_SCHEMA.TABLES WHERE INFORMATION_SCHEMA.TABLES.TABLE_SCHEMA = "@DatabaseName";并将结果保存到游标中,我可以获取给定数据库中由"n“个表生成的所有TRUNCATE TABLE x语句,然后通过准备和执行游标中的每个语句,它将截断给定数据库中的所有表。

必须将

BTW @DatabaseName作为参数提供给存储过程

希望这对其他人也有帮助:)

亚历克斯

票数 2
EN

Stack Overflow用户

发布于 2011-01-21 15:56:36

代码语言:javascript
复制
create procedure drop_tables_like(pattern varchar(255), db varchar(255))
begin
select @str_sql:=concat('drop table ', group_concat(table_name))
from information_schema.tables
where table_schema=db and table_name like pattern;

prepare stmt from @str_sql;
execute stmt;
drop prepare stmt;
end

然后调用

代码语言:javascript
复制
call drop_tables_like('%', 'dababase_name')
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4756430

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档