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参数来直接执行命令。
MySql批量drop table的更多相关文章
- (笔记)Mysql命令drop table:删除数据表
drop table命令用于删除数据表. drop table命令格式:drop table <表名>; 例如,删除表名为 MyClass 的表: mysql> drop ta ...
- 【MySQL】drop大表
利用硬链接和truncate降低drop table对线上环境的影响 众所周知drop table会严重的消耗服务器IO性能,如果被drop的table容量较大,甚至会影响到线上的正常. 首先,我们看 ...
- 利用硬链接和truncate降低drop table对线上环境的影响
众所周知drop table会严重的消耗服务器IO性能,如果被drop的table容量较大,甚至会影响到线上的正常. 首先,我们看一下为什么drop容量大的table会影响线上服务 直接执行drop ...
- mysql删除大表更快的drop table办法
mysql删除大表更快的drop table办法 参考资料:https://blog.csdn.net/anzhen0429/article/details/76284320 利用硬链接和trunca ...
- MySQL DROP TABLE操作以及 DROP 大表时的注意事项【转】
删表 DROP TABLE Syntax DROP [TEMPORARY] TABLE [IF EXISTS] tbl_name [, tbl_name] ... [RESTRICT | CASCAD ...
- MySQL DROP TABLE操作以及 DROP 大表时的注意事项
语法: 删表 DROP TABLE Syntax DROP [TEMPORARY] TABLE [IF EXISTS] tbl_name [, tbl_name] ... [RESTRICT | CA ...
- Drop Table对MySQL的性能影响分析
[问题描述] 最近碰到有台MySQL实例出现了MySQL服务短暂hang死,表现为瞬间的并发线程上升,连接数暴增. 排查Error Log文件中有page_cleaner超时的信息,引起我们的关注: ...
- MySQL删除大表时潜在的问题(drop table,truncate table)
来源于:https://www.cnblogs.com/CtripDBA/p/11465315.html,侵删,纯截图,避免吸引流量之嫌 case1,删除大表时,因为清理自适应hash索引占用的内容导 ...
- mysql drop table命令使用总结
drop性能 drop table(innodb引擎) 数量2000w,只需要5m
随机推荐
- 洛谷 P1571 眼红的Medusa
P1571 眼红的Medusa 题目描述 虽然Miss Medusa到了北京,领了科技创新奖,但是他还是觉得不满意.原因是,他发现很多人都和他一样获了科技创新奖,特别是其中的某些人,还获得了另一个奖项 ...
- Android-ViewPager+Fragment数据更新问题
由于FragmentPagerAdapter内部存在缓存.因此调用notifyDataSetChanged()并不可以去更新Fragment的内容. 參考:http://www.devba.com/i ...
- 使用 Go 语言开发大型 MMORPG 游戏服务器怎么样?(非常稳定、捕获所有异常、非常适合从头开始,但大公司已经有现成的C++框架、所以不会使用)
使用 Go 语言开发大型 MMORPG 游戏服务器怎么样?和C Socket服务器比起来有什么优劣?可行性怎么样? 从2013年起,经朋友推荐开始用Golang编写游戏登陆服务器, 配合C++做第三方 ...
- theme-windowAnimationStyle 动画设置
对于windowAnimationStyle 的引用,目前自己发现的有两处 1.就是直接在Theme 中引用的,如下 <style name="Theme.Funui" pa ...
- 4. Vue-Resource / axios 异步插件
安装 cnmp i vue-resource --save (--save 安装到dependencies下) 引用 <script src="node_modules/vue-res ...
- 自己定义progressdialog载入动画,这里还有旋转的载入条,美团,多个图片动画
自己定义progressdialog载入动画,这里还有旋转的载入条,美团,多个图片动画 下载Demo:http://download.csdn.net/detail/menglele1314/8775 ...
- 从数据表中随机抽取n条数据有哪几种方法(join实现可以先查数据然后再拼接)
从数据表中随机抽取n条数据有哪几种方法(join实现可以先查数据然后再拼接) 一.总结 一句话总结:最好的是这个:"SELECT * FROM table WHERE id >= (( ...
- oracle 多行转多列查询
oracle 多行转多列查询 ---create table Fruit(id int,name varchar(20), Q1 int, Q2 int, Q3 int, Q4 int);inse ...
- 使用VHD,让Win XP和 Win2003 运行在内存中
通过一定的手段可以让XP和2003甚至Win7运行在内存中.我很感兴趣,于是按照网上的资料在VBox虚拟机中测试了一次,运行成功.这几天将其折腾到实体机上. 声明:我的做法和网上的做法有些不一样,我的 ...
- windows下安装emscripten
windows下安装emscripten windows下安装emscripten需要python.git环境 python安装 git安装 开始安装 # 1.克隆emsdk git clone ht ...