MySQL - 从大数据库中删除一些特定的表

时间:2011-05-13 19:08:29

标签: mysql database

我们如何从数据库中删除某些特定的表。例如,我有一个包含超过20.000个表的数据库,我需要删除名称中包含一些特定字符串的数据库。那我该怎么办呢?有没有办法从数据库中获取所有表名?

3 个答案:

答案 0 :(得分:7)

您可以从information_schema获取包含特定名称的表格。

这是获取数据库中表格列表的方法:

select table_name from information_schema.tables;

考虑到这一点,您可以生成一个脚本来删除所需的表:

select concat('drop table ', table_name, ';')
  from information_schema.tables;

然后复制该脚本并将其粘贴到SQL解释器上。

您还可以根据名称或数据库过滤表格:

select concat('drop table ', table_name, ';')
  from information_schema.tables
 where table_name like 'abc%'
   and table_schema = 'myDatabase'; --db name

答案 1 :(得分:0)

同意w / @8wrl,但如果你必须使用IF ... THEN语句http://dev.mysql.com/doc/refman/5.0/en/if-statement.html来DROP TABLE

答案 2 :(得分:0)

information_schema视图有助于列出和过滤任何符合ANSI标准的数据库中的表:

select *
  from information_schema.tables T
 where T.table_name like '%FILTER HERE%'

您可以使用动态SQL和光标通过上面的记录集循环并删除相关表。