• 如何快速delete数据


    苦于qa账号,木有drop,truncate权限,同步数据要挨个delete表里边的数据,就写了个脚本,循环删除某个目标库的所有表里边的数据。

    先在information_schema的库里边,通过TABLES的表(注意此处是大写,后边有些必须是大写,自己可以去了解下这个数据库的作用)去获取目标数据库中包涵那些表,然后通过循环逐个delete表中的数据,然后就可以同步数据了。

    同步数据的时候需要注意:很多都是通过id自增列进行表连接的,但是如果新插入一列(不带id),id会随着增长,所以insert的时候,要把id带上,通过mysqldump把数据导出来,然后整个insert到目标库。

    #!/bin/bash
    host="你的数据库host"
    user="你的数据库密码"
    pwd="beta库的密码"
    
    conStr="mysql -h$host -u$user -p$pwd --database=information_schema"
    #$conStr -e "use information_schema;"
    conStr2="mysql -h$host -u$user -p$pwd --database=$1"
    lista=$($conStr -e "select TABLE_NAME from TABLES where TABLE_SCHEMA='$1';")
    echo "starting................."
    for i in $(echo $lista)
    do
            if [[ $i == "TABLE_NAME" ]];then
                    continue
            else
                    echo "deleting the data of $i"
                    $conStr2 -e "delete from $i"
            fi
    done
    echo "Ending...................."

    简单说下drop,delete,truncate。
    drop:就是直接干掉,一下子就木有了,表结构和数据都木有了,如果需要表,还需要自己crete,很快。

    delete:只操作数据,逐行删除,而且自增的id也不会消除,数据很多时很慢,但是delete的优点是可以根据某一条件进行删除。

    truncate:直接干掉,并自动重新建表,数据都( _ )/~~拜拜了。

    可以多了解了解mysql的infromation_schema和performance_schema库的作用。

  • 相关阅读:
    ExcelUtil工具类-1
    图论-floyd算法-python实现
    流式编程一些简单的例子
    利用Stream实现简单的等差数列求和
    根据主机IP列表自动部署指定规模的redis cluster
    使用cgroup限制磁盘io读写速率
    consul kv导出和导入(备份)
    mysql8.0 运维相关新特性(未完待续)
    Rider写ASP.NET MVC调试报错
    网络协议知识串讲:搭建一个网络试验环境:授人以鱼不如授人以渔
  • 原文地址:https://www.cnblogs.com/liuweiqiang/p/4095854.html
Copyright © 2020-2023  润新知