数据库比对脚本(PHP版)
$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版)的更多相关文章
- 批量备份数据库脚本(PowerShell版)
开始 昨天备份一个数据库拿来测试,发现备份后的文件非常大.后来去检查下使用的备份脚本,原来之前的备份脚本没有压缩功能. 现把之前的备份脚本修改下,支持压缩备份,和支持仅复制备份(CopyOnly). ...
- C语言与数据库操作入门(Win版)
C语言与数据库操作入门(Win版) 2017年12月10日 17:30:17 阅读数:1387 数据库,DataBase,学C语言的是不是想说,很想爱她却并不容易呢?不用着急,C语言也可以操作数据库的 ...
- office全系列激活脚本-改良版
@ECHO OFFTITLE office 全版本系统激活@echo offfor /l %%a in (8,1,16) do (for /f "tokens=*" %%i in ...
- windows全系列激活脚本-改良版.cmd
@ECHO OFFTITLE Windows 全版本系统激活cscript //nologo %Systemroot%\system32\slmgr.vbs -skms 10.1.1.12ECHO 检 ...
- 从SQL Server数据库转到Oracle数据库的数据脚本处理
在我们很多情况下的开发,为了方便或者通用性的考虑,都首先考虑SQL Server数据库进行开发,但有时候客户的生产环境是Oracle或者其他数据库,那么我们就需要把对应的数据结构和数据脚本转换为对应的 ...
- office全系列激活脚本-改良版.cmd
@ECHO OFFTITLE office 全版本系统激活@echo offfor /l %%a in (8,1,16) do (for /f "tokens=*" %%i in ...
- Linux下定时备份MySQL数据库的Shell脚本
Linux下定时备份MySQL数据库的Shell脚本 对任何一个已经上线的网站站点来说,数据备份都是必须的.无论版本更新还是服务器迁移,备份数据的重要性不言而喻.人工备份数据的方式不单耗费大量时间 ...
- mysql数据库分库备份脚本
mysql数据库分库备份脚本 版本1 for dbname in `mysql -uroot -poldboy123 -e "show databases;" |grep -Evi ...
- 全自动安装mongoDB数据库的shell脚本
最近在研究mongoDB数据库,写了个全自动安装mongoDB数据库的shell脚本,仅供参考,欢迎拍砖,内容如下: #!/bin/bash # shell的执行选项: # -n 只读取shell脚本 ...
- MySQL数据库主从切换脚本自动化
MySQL数据库主从切换脚本自动化 本文转载自:https://blog.csdn.net/weixin_36135773/article/details/79514507 在一些实际环境中,如何实现 ...
随机推荐
- UNIX文化与历史--初学者必看
UNIX文化与历史 UNIX这个名字早已被众多用户所熟知.作为一个操作系统,它以其独特的魅力----即开放性.可移植性.和多用户多任务等特点,不仅赢得了广大用户的喜爱,同时也受到许多计算机厂商的青睐. ...
- mongoose的populate的使用方法;
LotteryReceiveRecord.find({"lottery":req.params.id}).populate("user lottery").ex ...
- inotify
inotify,文件系统控制函数,通知机制: ioctl, io控制函数
- JavaScript之向文档中添加元素和内容的方法
一.非DOM方法添加 1.document.write() <html xmlns="http://www.w3.org/1999/xhtml"> <head&g ...
- WebService:The remote server returned an error: (400) Bad Request
开发工具:VS2010.开发组件:WebService.运行环境:Windows 今天一个同事在进行计费接口联调试时,发现了一个非常奇怪的问题:接口在家里环境测试,一切正常,但是部署到现网环境之后,连 ...
- matlab GUI之常用对话框(三)-- dialog \ errordlg \ warndlg \ helpdlg \ msgbox \questdlg
常用的对话框(三) 1.普通对话框 dialog 调用格式: h=dialog('PropertyName','PropertyValue'......) %普通对话框 h=dialog( ]); ...
- 深入理解java虚拟机系列二——垃圾收集算法
在主流的商用程序语言中大多都是用根搜索算法(GC Roots Tracing)判断对象是否存活,比如java,c#等.当从GC Roots到某个对象不可达,则证明此对象是不可用的,将要被回收. 商业虚 ...
- STL模板_十大容器概念
一.向量(续)1.大小和容量大小:容器中元素的个数.容量:容器中可容纳元素的个数.size_type size (void) const; // 获取大小void resize (size_type ...
- Linux学习之Center os网络配置
首先介绍一下VMware的网络连接方式.我们的主机通常经过物理网卡与局域网和Internet相连接,而虚拟机既已被称之为虚拟计算机,那虚拟网卡也必然存在,而如果我们想让虚拟计算机能连接到局域网或者In ...
- 一、富有表现力的JavaScript
第一章:富有表现力的JavaScript 1.1 JavaScript的灵活性 1.2 弱类型语言 1.3 函数是一等对象 1.4 对象的易变性 1.5 继承 1.6 JavaScript ...