欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 运维知识 > 数据库 >内容正文

数据库

mysql 批量drop_MySql批量drop table

发布时间:2025/3/21 数据库 41 豆豆
生活随笔 收集整理的这篇文章主要介绍了 mysql 批量drop_MySql批量drop table 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

今天发现数据库中很多没用的表,想清理掉。

发现mysql好像不支持类似这样的写法:drop table like "%r"

在oracle中,查了资料,是可以通过其他方式来实现:看这里【我顶!链接丢了!】

那么想在mysql中实现,怎么做呢?

两个思路:

第一、修改mysql源码,在drop的时候加上like关键字支持。

第二、写一个脚本,在数据库之外执行。

-----------------------------《混个》-------------------------------

第一个方法,现在还没有办法去做到。【水平不够=。=】

第二个方法的思路:

1、连接数据库

2、查询出所有的符合条件的表

3、挨个删除【删除过程遇到错误输出提示即可】

针对第二个方法的脚本如下:

先创建一些表:脚本如下

#! /bin/bash

for((i=1;i<=10;i++));

do

mysql -P3307 -uroot -proot -e"use test;create table tb_$i(id int);"

done;

然后创建删除shell:

#! /bin/bash

word=`echo $1`

params=`echo $#`

echo "your input param is|"$word"|"

#param is ok?

if [ $params -lt 1 ]

then

echo "usage:drop 'yourword'"

exit

fi

#connect mysql and read tb names

var=$(mysql -P3307 -uroot -proot -e"use test;show tables like '$word';")

count=0

#read table names

for i in $var;

do

let count=$count+1

if [ $count -ne 1 -a $count -ne 2 ]

then

#delete from db

echo "deleting ...$i"

mysql -P3307 -uroot -proot -e"use test;drop table $i"

fi

done;

上面是drop脚本。使用方法:

drop ‘%a%’

需要在后面的参数中指明要匹配的内容。与like关键字后面要加的内容一样。

脚本中每次执行都需要连接数据库。效率比较低下。但是对于少量的表,不会有太大区别。----------------------------------------------------------

if [ $count -ne 1 -a $count -ne 2 ]意思是说,不考虑第一个和第二个参数。因为从mysql读出来的表名称是这样的:;

Tables_in_test () tb_1 tb_10 tb_2 tb_3 tb_4 tb_5 tb_6 tb_7 tb_8 tb_9

前两个需要忽略。

--------------------------------------------------------------

mysql -P3307 -uroot -proot -e"use test;show tables like '$word';"

mysql可以用-e参数来直接执行命令。

《新程序员》:云原生和全面数字化实践50位技术专家共同创作,文字、视频、音频交互阅读

总结

以上是生活随笔为你收集整理的mysql 批量drop_MySql批量drop table的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。