zoukankan      html  css  js  c++  java
  • Mysql查询架构信息

    今天想给整个数据库做初始化,也就是清空所有表,然后让索引归零,使用truncate table 就可以,但好多张表,怎么批量搞定呢?

    有人说重建表吧,dump一下,然后再重建,但我还是想用truncate,毕竟用得熟也好理解。

    但是怎么获取所有表的表名呢?然后还得手写N个Truncate ,到网上查了查,还有另一种方法可以批量获取Table的名称,并生产出Truncae Table的语句。

    具体思路是 找到所有表的表名 -> 用表名自动生成语句的查询结果 -> 把查询结果复制出来 -> 运行

    具体的语句就是下面这段

    SELECT CONCAT('truncate table ',table_name,';') 
    FROM information_schema.tables WHERE table_schema = '你的数据库名' AND table_type != 'view';
    

    查询结果是这样的:

    然后勾选中全选,右键->复制选择的查询记录->粘贴到执行区域->执行,就可以了,复制出来记录都是带着引号的,可以用一些编辑工具进行批量删引号,我用的sublime :-D

    执行之前请小心检查,把字典表什么的去掉,否则还得重新填,而且执行前请备份当前的库,以免后悔。

     好了,在回顾一下上面那条语句, 核心是查Mysql的数据库架构信息表 [information_schema.tables],语句中的

    table_type != 'view'

     这句话是过滤掉查询结果中的视图,至于其它类型的,仔细看看查询结果,把不需要的去掉就行了,然后用CONCAT拼语句结构的查询结果去执行。

  • 相关阅读:
    Percona: How to Restore MySQL Logical Backup at Maximum Speed
    MySQL之UNDO及MVCC、崩溃恢复
    MySQL checkpoint深入分析
    关于MySQL latch争用深入分析与判断
    InnoDB关键特性之刷新邻接页-异步IO
    InnoDB关键特性之自适应hash索引
    MySQL后台线程的清理工作
    MySQL IO线程及相关参数调优
    MySQL存储写入性能严重抖动分析
    MySQL的SQL预处理(Prepared)
  • 原文地址:https://www.cnblogs.com/JonathanEvents/p/4730451.html
Copyright © 2011-2022 走看看