原文: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的更多相关文章

  1. (笔记)Mysql命令drop table:删除数据表

    drop table命令用于删除数据表. drop table命令格式:drop table <表名>; 例如,删除表名为 MyClass 的表:    mysql> drop ta ...

  2. 【MySQL】drop大表

    利用硬链接和truncate降低drop table对线上环境的影响 众所周知drop table会严重的消耗服务器IO性能,如果被drop的table容量较大,甚至会影响到线上的正常. 首先,我们看 ...

  3. 利用硬链接和truncate降低drop table对线上环境的影响

    众所周知drop table会严重的消耗服务器IO性能,如果被drop的table容量较大,甚至会影响到线上的正常. 首先,我们看一下为什么drop容量大的table会影响线上服务 直接执行drop ...

  4. mysql删除大表更快的drop table办法

    mysql删除大表更快的drop table办法 参考资料:https://blog.csdn.net/anzhen0429/article/details/76284320 利用硬链接和trunca ...

  5. MySQL DROP TABLE操作以及 DROP 大表时的注意事项【转】

    删表 DROP TABLE Syntax DROP [TEMPORARY] TABLE [IF EXISTS] tbl_name [, tbl_name] ... [RESTRICT | CASCAD ...

  6. MySQL DROP TABLE操作以及 DROP 大表时的注意事项

    语法: 删表 DROP TABLE Syntax DROP [TEMPORARY] TABLE [IF EXISTS] tbl_name [, tbl_name] ... [RESTRICT | CA ...

  7. Drop Table对MySQL的性能影响分析

    [问题描述] 最近碰到有台MySQL实例出现了MySQL服务短暂hang死,表现为瞬间的并发线程上升,连接数暴增. 排查Error Log文件中有page_cleaner超时的信息,引起我们的关注: ...

  8. MySQL删除大表时潜在的问题(drop table,truncate table)

    来源于:https://www.cnblogs.com/CtripDBA/p/11465315.html,侵删,纯截图,避免吸引流量之嫌 case1,删除大表时,因为清理自适应hash索引占用的内容导 ...

  9. mysql drop table命令使用总结

    drop性能 drop table(innodb引擎) 数量2000w,只需要5m

随机推荐

  1. XAMPP各个版本配置

    XAMPP各个版本配置 http://code.stephenmorley.org/articles/xampp-version-history-apache-mysql-php/ XAMPP  Ap ...

  2. Web 组件是什么

    Web 组件是什么 一.总结 这篇下面的内容多看 1.组件化的目的:高内聚,低耦合,便于多人同时开发 2.各种前端框架(前端组件化)让写前端不要太简单: 3.组件编程最最最最简单实例: <lin ...

  3. vue .sync 修饰符和自定义v-model的使用

    VUE 是单向数据流 当我们需要对一个 prop 进行"双向绑定"时 vue 修饰符.sync 子组件:this.$emit('update:visible', visible), ...

  4. OpenCV func

    cvLoadImage("lena.jpg", CV_LOAD_IMAGE_COLOR);  //CV_LOAD_IMAGE_GRAYSCALE   //0

  5. MyBatis学习总结(13)——Mybatis查询之resultMap和resultType区别

    MyBatis的每一个查询映射的返回类型都是ResultMap,只是当我们提供的返回类型属性是resultType的时候,MyBatis对自动的给我们把对应的值赋给resultType所指定对象的属性 ...

  6. 限制tomcat仅响应本机请求(转)

    http://blog.bbzhh.com/index.php/archives/135.html 在VPS上搭建了nginx和tomcat应用,想通过nginx来反向代理127.0.0.1:8080 ...

  7. Qt产生随机数(两种方法)

    第一种方法 #include <QTime> QTime time; time= QTime::currentTime(); qsrand(time.msec()+time.second( ...

  8. 第一个Python程序(全面)

    说明:该篇博客是博主一字一码编写的,实属不易,请尊重原创,谢谢大家! 一.Windows系统 1.编写Python程序方式之Sublime文本编辑器: 1>打开sublime,创建hello.p ...

  9. git的安装及其使用

    在Windows上安装Git的快捷方式: 工具:1.Windows的console工具:ConEmu(https://conemu.github.io/)多窗口.记录log.多theme选择,操作Gi ...

  10. 关于mybatis中,批量增删改查以及參数传递的问题

    1.參数传递的问题 大多数情况下,我们都是利用map作为參数,而且大部分情况下都是仅仅有一个參数. 可是,我们也能够利用@param注解,来传入多个參数,此时,mybatis会自己主动将參数封装成ma ...