利用PHP脚本辅助MySQL数据库管理3-删除重复表索引

<?php
$dbi = new DbMysql;
$dbi->dbh = ‘mysql://root:[email protected]/coffeetest‘;

$map = array();
$dbi->fetchMap("SHOW TABLES", $map);
$tables = array_keys($map);
for($i=0; $i<count($tables); $i++){
    echo($tables[$i]."\n");
    $sql = "SHOW INDEX FROM ".$tables[$i];
    $list = $dbi->fetchAll($sql);
    $indexs = array();
    foreach($list as $item){
        $indexs[$item[‘Key_name‘]][] = $item[‘Column_name‘];
    }
    $j = 0;
    $list = array();
    foreach($indexs as $key=>$val){
        $list[] = array(‘j‘=>$j, ‘key‘=>$key, ‘val‘=>implode(",",$val));
        $j++;
    }
    $count = count($list) - 1;
    for($j=$count; $j>=0; $j=$j-1){
        $me = $list[$j];
        foreach($list as $item){
            if($item[‘j‘]<$me[‘j‘] && $item[‘val‘]==$me[‘val‘]){
                echo("\t".$j."\t".$me[‘key‘]."\t".$me[‘val‘]."\n");
                $sql = "ALTER TABLE ".$tables[$i]." DROP INDEX `".$me[‘key‘]."`";
                $dbi->execute($sql);
            }
        }
    }
}
?>

原文地址:https://www.cnblogs.com/coffee_cn/p/8994334.html

时间: 2024-10-30 05:17:23

利用PHP脚本辅助MySQL数据库管理3-删除重复表索引的相关文章

利用PHP脚本辅助MySQL数据库管理4-两个库表结构差异比较

<?php define('DATABASE1', 'coffeetest'); $dbi1 = new DbMysql; $dbi1->dbh = 'mysql://root:[email protected]/'.DATABASE1; define('DATABASE2', 'sinatest'); $dbi2 = new DbMysql; $dbi2->dbh = 'mysql://root:[email protected]/'.DATABASE2; // db1 $db1 =

利用PHP脚本辅助MySQL数据库管理5-检查异常数据

<?php $dbi = new DbMysql; $dbi->dbh = 'mysql://root:[email protected]/coffeetest'; $map = array(); $dbi->fetchMap("SHOW TABLES", $map); $tables = array_keys($map); // 找出含有cid字段的表 $cid_tables = array(); for($j=0; $j<count($tables); $j

利用PHP脚本辅助MySQL数据库管理1-表结构

<?php $dbi = new DbMysql; $dbi->dbh = 'mysql://root:[email protected]/coffeetest'; $map = array(); $dbi->fetchMap("SHOW TABLES", $map); $tables = array_keys($map); for($i=0; $i<count($tables); $i++){ echo($tables[$i]."\n");

MYSQL中delete删除多表数据

MYSQL中delete删除多表数据DELETE删除多表数据,怎样才能同时删除多个关联表的数据呢?这里做了深入的解释:1. delete from t1 where 条件2.delete t1 from t1 where 条件3. delete t1 from t1,t2 where 条件4.delete t1,t2 from t1,t2 where 条件前 3者是可行的,第4者不可行.也就是简单用delete语句无法进行多表删除数据操作,不过可以建立级联删除,在两个表之间建立级联删除 关系,则

MYSQL中delete删除多表数据与删除关联数据

在mysql中删除数据方法有很多种,最常用的是使用delete来删除记录,下面我来介绍delete删除单条记 录与删除多表关联数据的一些简单实例. 1.delete from t1 where 条件 2.delete t1 from t1 where 条件 3.delete t1 from t1,t2 where 条件 4.delete t1,t2 from t1,t2 where 条件 前3者是可行的,第4者不可行. 也就是简单用delete语句无法进行多表删除数据操作,不过可以建立级联删除,

工作随笔——mysql子查询删除原表数据

最近在开发的时候遇到一个mysql的子查询删除原表数据的问题.在网上也看了很多方法,基本也是然并卵(不是写的太乱就是效率太慢). 公司DBA给了一个很好的解决方案,让人耳目一新. DELETE fb.* FROM froadbill.bill fb LEFT JOIN froadbill.refundinfo br ON br.billSeqNo = fb.seq_no WHERE br.billSeqNo IS NULL AND fb.create_time >='20150102000000

Mysql添加更新删除数据-表

例如 此处拥有一个表名为 uuser 为表添加新数据 1 insert into uuser values(1,'小王','111'); 2 insert into uuser values(2,'小张','111'); 3 insert into uuser values(3,'小六','111'); 假如只想添加uid和uname 1 insert into uuser(uid,uname) values(1,'小张'); 那么pas自动填充为NULL. 为表更新数据 这里把小王的pas改成

利用Python脚本备份mysql数据库

近期利用空余时间学习了python的一些基础内容,用来实践,做了一个Mysql备份的脚本,按日备份并打包压缩:python比原来的shell只能运行在linux下面更广泛一些,而且后期扩展也更好. ################################## Functions: 1)按日备份数据库,并将备份文件压缩打包: 2)成功则将备份信息写入日志,失败则发邮件告警给管理员: 3)如果已经备份成功,不再重复备份: 4)稍作改动,可用于WINDOWS备份 ###############

mysql如何快速删除重复的数据

在mysql中去重,其实是一个很简单的事情,来看下面的例子: mysql> DROP TABLE test; Query OK, 0 rows affected (0.01 sec) mysql> CREATE TABLE test ( id  INT, NAME VARCHAR(10) ); Query OK, 0 rows affected (0.01 sec) mysql> INSERT INTO test VALUES(1,'a1'),(2,'a2'),(3,'a3'),(4,'