PHP 进行数据庫对比工具

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介:
<?php
/**
  * author jackluo
  * net.webjoy@gmail.com
  */
class IMysqlDiff
{

    
    private $master,$slave;
    

    public function __construct()
    {
        $this->master = array();
        $this->slave = array();
    }

    /**
     *    master
     */
    
    public function setMasterTable($host,$user,$pwd,$dbname){

        $conn      = mysql_connect($host,$user,$pwd); 
        if (!$conn) {
            throw new Exception("Database Connect Error");
        }

        $select  = mysql_select_db($dbname,$conn); //标准的数据库 
        if (!$select) {
            throw new Exception("SELECT Database Error");    
        }
        
        $q = mysql_query("show tables"); 
        while($s = mysql_fetch_array($q)){ 
            $name = $s[0]; 
            $q1 = mysql_query("desc $name"); 
            while ($s1 = mysql_fetch_array($q1)) { 
                $this->master[$name][] =$s1[0]; 
            } 
        } 
        mysql_close($conn);
    }
    

    /**
     *    Slave 
     */
    
    public function setSlaveTable($host,$user,$pwd,$dbname){
        $conn       = mysql_connect($host,$user,$pwd); 
        if (!$conn) {
            throw new Exception("Database Connect Error");
        }

        $select  = mysql_select_db($dbname,$conn); //标准的数据库 
        if (!$select) {
            throw new Exception("SELECT Database Error");    
        }
        
        $q = mysql_query("show tables"); 
        while($s = mysql_fetch_array($q)){ 
            $name = $s[0]; 
            $q1 = mysql_query("desc $name"); 
            while ($s1 = mysql_fetch_array($q1)) { 
                $this->slave[$name][] =$s1[0]; 
            } 
        } 
        mysql_close($conn);
    }

    /**
     *    comparison
     */
    
    public function comparison(){
        $f = $e = array(); 
        $str = $fuhao =''; 
        foreach($this->master as $k=>$v){ 
            
            if (!empty($this->slave[$k])){
                if (!is_array($this->slave[$k])) {
                    $e[] = $k;     //缺少表 
                }else if(count($this->slave[$k]) <> count($v)){
                    foreach($v as $k1=>$v1){ 
                        if(!in_array($v1,$this->slave[$k])){ 
                            $f[$k][] = $v1; ////缺少表的字段 
                        } 
                    }
                }
            }else{
                $e[] = $k;
            }
        }
        return array('tables'=>$e,'fields'=>$f);
    }
    
}

/*
$diff = new IMysqlDiff();
$diff->setMasterTable('127.0.0.1','root','admin','platform_test');
$diff->setSlaveTable('127.0.0.1','root','admin','platform');
$result =     $diff->comparison();

print_r($result);
//*/
//*/

 

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
3天前
|
SQL 存储 关系型数据库
数据库开发之图形化工具以及表操作的详细解析
数据库开发之图形化工具以及表操作的详细解析
19 0
|
1月前
|
SQL 缓存 PHP
PHP技术探究:优化数据库查询效率的实用方法
本文将深入探讨PHP中优化数据库查询效率的实用方法,包括索引优化、SQL语句优化以及缓存机制的应用。通过合理的优化策略和技巧,可以显著提升系统性能,提高用户体验,是PHP开发者不容忽视的重要议题。
|
1月前
|
数据库
ABAP 泛型编程实战 - 分享一个数据库表内容的拷贝工具试读版
ABAP 泛型编程实战 - 分享一个数据库表内容的拷贝工具试读版
20 0
|
2月前
|
运维 安全 关系型数据库
参加数据库管理工具DAS训练营,赢取国潮保温杯和阿里云定制双肩包!
本训练营带您简单了解数据库自治与云安全服务,数据库自治服务提供云上RDS、PolarDB、NoSQL、ADB等数据库7*24小时异常检测、SQL自优化、安全合规审计、弹性伸缩、数据自治、锁分析等亮点功能。一站式自动化、数字化DAS集成平台,助力您畅享DBA运维智能化。
|
3月前
|
JSON PHP 数据格式
|
1月前
|
关系型数据库 MySQL 数据库
rds安装数据库客户端工具
安装阿里云RDS的数据库客户端涉及在本地安装对应类型(如MySQL、PostgreSQL)的客户端工具。对于MySQL,可选择MySQL Command-Line Client或图形化工具如Navicat,安装后输入RDS实例的连接参数进行连接。对于PostgreSQL,可以使用`psql`命令行工具或图形化客户端如PgAdmin。首先从阿里云控制台获取连接信息,然后按照官方文档安装客户端,最后配置客户端连接以确保遵循安全指引。
86 1
|
1月前
|
Oracle 关系型数据库 MySQL
一款好用的数据库表结构文档生成工具
一款好用的数据库表结构文档生成工具
|
1月前
|
网络协议 关系型数据库 MySQL
如何实现在公网下使用navicat图形化工具远程连接本地内网的MariaDB数据库
如何实现在公网下使用navicat图形化工具远程连接本地内网的MariaDB数据库
|
1月前
|
存储 PHP Apache
使用CFimagehost源码搭建无需数据库支持的PHP免费图片托管私人图床
使用CFimagehost源码搭建无需数据库支持的PHP免费图片托管私人图床