$config = [
'hotfix' => [
'host'=>'',
'port'=>'',
'account'=>'',
'password'=>'',
'database'=>'',
],
'release' => [
'host'=>'',
'port'=>'',
'account'=>'',
'password'=>'',
'database'=>'',
],
'master' => [
'host'=>'',
'port'=>'',
'account'=>'',
'password'=>'',
'database'=>'',
],
]; function display($compare1,$compare2){
$html = '<title>数据库对比脚本</title>';
$html .= '<form method="GET">
原数据库:
<select name="db1">
<option value="hotfix"'.($compare1=='hotfix'?'selected="selected"':"").'>开发站</option>
<option value="release"'.($compare1=='release'?'selected="selected"':"").'>测试站</option>
<option value="master"'.($compare1=='master'?'selected="selected"':"").'>正式站</option>
</select>
现数据库:
<select name="db2">
<option value="hotfix"'.($compare2=='hotfix'?'selected="selected"':"").'>开发站</option>
<option value="release"'.($compare2=='release'?'selected="selected"':"").'>测试站</option>
<option value="master"'.($compare2=='master'?'selected="selected"':"").'>正式站</option>
</select>
<input type="submit" value="对比" /><br><br>';
$html .= '相比原数据库,现数据库:<br>';
return $html;
} function databaseData($config,$compare){
$aaaaa = mysql_connect(
$config[$compare]['host'].':'.$config[$compare]['port'],
$config[$compare]['account'],
$config[$compare]['password']
);
mysql_select_db($config[$compare]['database']); //标准的数据库
$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)) {
$a[$name]['field'][] =$s1[0];
$a[$name]['format'][] =$s1[1];
}
}
mysql_close();
return $a;
} function dataCompare($a,$aa){
$f = $e = array();
$str = $fuhao ='';
foreach($a as $k=>$v){
if(!is_array($aa[$k])){
$e[] = $k;
echo "<div style='background:#fdd'>缺少表:<font color='blue'>$k</font></div>";
}
else{
foreach($v['field'] as $k1=>$v1){
if(!in_array($v1,$aa[$k]['field'])){
$f[$k]['field'][] = $v1;
echo "<div style='background:#ff9'>表<font color='blue'>".$k."</font>缺少字段: <font color='red'>".$v1."</font>"."</div>";
}else{
if(!in_array($v['format'][$k1],$aa[$k]['format'])){
$f[$k]['format'][] = $v['format'][$k1];
echo "<div style='background:#ddd'>表<font color='blue'>".$k."</font>字段 <font color='red'>".$v1."</font>修改为<font color='green'>".$v['format'][$k1]."</font>"."</div>";
}
}
}
}
}
} $compareOne = isset($_GET['db1'])?$_GET['db1']:'';
$compareTwo = isset($_GET['db2'])?$_GET['db2']:'';
echo display($compareOne,$compareTwo);
$a = databaseData($config,$compareOne);
$aa = databaseData($config,$compareTwo);
dataCompare($a,$aa);

数据库比对脚本(PHP版)的更多相关文章

  1. 批量备份数据库脚本(PowerShell版)

    开始 昨天备份一个数据库拿来测试,发现备份后的文件非常大.后来去检查下使用的备份脚本,原来之前的备份脚本没有压缩功能. 现把之前的备份脚本修改下,支持压缩备份,和支持仅复制备份(CopyOnly). ...

  2. C语言与数据库操作入门(Win版)

    C语言与数据库操作入门(Win版) 2017年12月10日 17:30:17 阅读数:1387 数据库,DataBase,学C语言的是不是想说,很想爱她却并不容易呢?不用着急,C语言也可以操作数据库的 ...

  3. office全系列激活脚本-改良版

    @ECHO OFFTITLE office 全版本系统激活@echo offfor /l %%a in (8,1,16) do (for /f "tokens=*" %%i in ...

  4. windows全系列激活脚本-改良版.cmd

    @ECHO OFFTITLE Windows 全版本系统激活cscript //nologo %Systemroot%\system32\slmgr.vbs -skms 10.1.1.12ECHO 检 ...

  5. 从SQL Server数据库转到Oracle数据库的数据脚本处理

    在我们很多情况下的开发,为了方便或者通用性的考虑,都首先考虑SQL Server数据库进行开发,但有时候客户的生产环境是Oracle或者其他数据库,那么我们就需要把对应的数据结构和数据脚本转换为对应的 ...

  6. office全系列激活脚本-改良版.cmd

    @ECHO OFFTITLE office 全版本系统激活@echo offfor /l %%a in (8,1,16) do (for /f "tokens=*" %%i in ...

  7. Linux下定时备份MySQL数据库的Shell脚本

    Linux下定时备份MySQL数据库的Shell脚本   对任何一个已经上线的网站站点来说,数据备份都是必须的.无论版本更新还是服务器迁移,备份数据的重要性不言而喻.人工备份数据的方式不单耗费大量时间 ...

  8. mysql数据库分库备份脚本

    mysql数据库分库备份脚本 版本1 for dbname in `mysql -uroot -poldboy123 -e "show databases;" |grep -Evi ...

  9. 全自动安装mongoDB数据库的shell脚本

    最近在研究mongoDB数据库,写了个全自动安装mongoDB数据库的shell脚本,仅供参考,欢迎拍砖,内容如下: #!/bin/bash # shell的执行选项: # -n 只读取shell脚本 ...

  10. MySQL数据库主从切换脚本自动化

    MySQL数据库主从切换脚本自动化 本文转载自:https://blog.csdn.net/weixin_36135773/article/details/79514507 在一些实际环境中,如何实现 ...

随机推荐

  1. UNIX文化与历史--初学者必看

    UNIX文化与历史 UNIX这个名字早已被众多用户所熟知.作为一个操作系统,它以其独特的魅力----即开放性.可移植性.和多用户多任务等特点,不仅赢得了广大用户的喜爱,同时也受到许多计算机厂商的青睐. ...

  2. mongoose的populate的使用方法;

    LotteryReceiveRecord.find({"lottery":req.params.id}).populate("user lottery").ex ...

  3. inotify

    inotify,文件系统控制函数,通知机制: ioctl, io控制函数

  4. JavaScript之向文档中添加元素和内容的方法

    一.非DOM方法添加 1.document.write() <html xmlns="http://www.w3.org/1999/xhtml"> <head&g ...

  5. WebService:The remote server returned an error: (400) Bad Request

    开发工具:VS2010.开发组件:WebService.运行环境:Windows 今天一个同事在进行计费接口联调试时,发现了一个非常奇怪的问题:接口在家里环境测试,一切正常,但是部署到现网环境之后,连 ...

  6. matlab GUI之常用对话框(三)-- dialog \ errordlg \ warndlg \ helpdlg \ msgbox \questdlg

    常用的对话框(三) 1.普通对话框  dialog 调用格式: h=dialog('PropertyName','PropertyValue'......) %普通对话框 h=dialog( ]); ...

  7. 深入理解java虚拟机系列二——垃圾收集算法

    在主流的商用程序语言中大多都是用根搜索算法(GC Roots Tracing)判断对象是否存活,比如java,c#等.当从GC Roots到某个对象不可达,则证明此对象是不可用的,将要被回收. 商业虚 ...

  8. STL模板_十大容器概念

    一.向量(续)1.大小和容量大小:容器中元素的个数.容量:容器中可容纳元素的个数.size_type size (void) const; // 获取大小void resize (size_type ...

  9. Linux学习之Center os网络配置

    首先介绍一下VMware的网络连接方式.我们的主机通常经过物理网卡与局域网和Internet相连接,而虚拟机既已被称之为虚拟计算机,那虚拟网卡也必然存在,而如果我们想让虚拟计算机能连接到局域网或者In ...

  10. 一、富有表现力的JavaScript

    第一章:富有表现力的JavaScript 1.1  JavaScript的灵活性 1.2  弱类型语言 1.3  函数是一等对象 1.4  对象的易变性 1.5  继承 1.6  JavaScript ...