DataConstruct.php
<?php

/**
* Created by PhpStorm.
* User: Administrator
* Date: 2017/7/21
* Time: 14:26
* 列子
* $pdo=new DataConstruct();
* $tables=$pdo->getAllTableNames();
* $pdo->printLog($pdo->getAllTableConstruct($tables),"F:/logstr.php");
* $pdo->importSql('E:/UserTable.sql');
*/class DataConstruct
{ public $dataBaseType;
public $host;
public $username;
public $password;
public $port;
public $database;
public $conn; public function __construct($username = "root", $password = "", $database = "aui", $port = "3306", $host = "localhost", $dataBaseType = "mysql")
{
$this->dataBaseType = $dataBaseType;
$this->host = $host;
$this->username = $username;
$this->password = $password;
$this->port = $port;
$this->database = $database;
$dsn = "$dataBaseType:dbname=$database;host=$host";
try {
$this->conn = new \PDO($dsn, $this->username, $this->password); } catch (PDOException $e) {
echo 'Connection failed: ' . $e->getMessage();
} } /**
* @desc 获取所有的额表明
* @return array
*/
public function getAllTableNames()
{
$tableNames = array();
$sql = "show tables";
$cursor = $this->conn->query($sql);
foreach ($cursor as $row) {
$tableNames[] = $row[0];
}
return $tableNames; } /**
* @desc 获取某个表的表结构
* @param $tablename
* @return array
*/
public function getTableConstruct($tablename)
{
$table = array();
$sql = "select COLUMN_NAME,COLUMN_TYPE,COLUMN_DEFAULT,COLUMN_KEY,COLUMN_COMMENT from information_schema.`COLUMNS` where TABLE_NAME='" . $tablename . "' and TABLE_SCHEMA='" . $this->database . "'";
$cursor = $this->conn->query($sql, \PDO::FETCH_ASSOC);
foreach ($cursor as $row) {
$table[$row['COLUMN_NAME']] = $row;
}
return $table;
} /**
* @desc 获取所有表的表结构
* @param array $tableNames
* @return array
*/
public function getAllTableConstruct($tableNames = array())
{
$AllTableConstruct = array();
if (is_array($tableNames)) {
foreach ($tableNames as $tableName) {
$AllTableConstruct[$tableName] = $this->getTableConstruct($tableName);
}
}
return $AllTableConstruct;
} /**
* @desc 打印表结构到指定的文件中
* @param $tableConstruct
* @param $logpath
*/
public function printLog($tableConstruct, $logpath)
{ foreach ($tableConstruct as $key => $table) {
file_put_contents($logpath, $key . PHP_EOL, FILE_APPEND);
file_put_contents($logpath, "COLUMN_NAME COLUMN_TYPE COLUMN_DEFAULT COLUMN_KEY COLUMN_COMMENT" . PHP_EOL, FILE_APPEND);
foreach ($table as $column) {
file_put_contents($logpath, $column['COLUMN_NAME'] . "\t" . $column['COLUMN_TYPE'] . "\t" . $column['COLUMN_DEFAULT'] . "\t" . $column['COLUMN_KEY'] . "\t" . $column['COLUMN_COMMENT'] . PHP_EOL, FILE_APPEND);
}
file_put_contents($logpath, PHP_EOL, FILE_APPEND);
}
} /**
* @desc 执行sql文件 (不能超温php.ini中配置的内存大小,否则会报内存溢出错误)
* @param $filepath
*/
public function importSql($filepath)
{
$_sql = file_get_contents($filepath);
$_arr = explode(';', $_sql);
$this->conn->query('set names utf8;');
foreach ($_arr as $_value) {
try {
$this->conn->query($_value . ';');
} catch (\PDOException $e) {
var_dump($this->conn->errorInfo());
} }
}
}
new.php   
<?php
include_once("DataConstruct.php");
//---------------------------------------比较两个不同的数据库之间的表结构-start-------------------------------
$pdo=new DataConstruct();
$oldtables=$pdo->getAllTableNames();
$pdonew=new DataConstruct("root",'','test');
$newtables=$pdonew->getAllTableNames();
foreach($newtables as $key => $val){
if(in_array($val,$oldtables)){
$oldTableCu=$pdo->getTableConstruct($val);
$newTableCU=$pdonew->getTableConstruct($val);
if(!empty(array_diff($oldTableCu,$newTableCU))){//表示不相同,没有变化
echo "---diff table---".$val;
}
}else{
echo "---new table---".$val;
}
}
//---------------------------------------比较两个不同的数据库之间的表结构--end------------------------------
?>

生成sql表结构的更多相关文章

  1. Mybatis总结之如何自动生成数据库表结构

    一般情况下,用Mybatis的时候是先设计表结构再进行实体类以及映射文件编写的,特别是用代码生成器的时候. 但有时候不想用代码生成器,也不想定义表结构,那怎么办? 这个时候就会想到Hibernate, ...

  2. 【工具篇】利用DBExportDoc V1.0 For MySQL自动生成数据库表结构文档

    对于DBA或开发来说,如何规范化你的数据库表结构文档是灰常之重要的一件事情.但是当你的库,你的表排山倒海滴多的时候,你就会很头疼了. 推荐一款工具DBExportDoc V1.0 For MySQL( ...

  3. 【VBA】EXCEL通过VBA生成SQL,自动生成创建表结构SQL

    原文:https://blog.csdn.net/zutsoft/article/details/45441343 编程往往与数据库密不可分,一个项目往往有很多的表,很多时候通过excel来维护表结构 ...

  4. SQL SERVER 自动生成 MySQL 表结构及索引 的建表SQL

          SQL SERVER的表结构及索引转换为MySQL的表结构及索引,其实在很多第三方工具中有提供,比如navicat.sqlyog等,但是,在处理某些数据类型.默认值及索引转换的时候,总有些 ...

  5. mysql数据库性能优化(包括SQL,表结构,索引,缓存)

    优化目标减少 IO 次数IO永远是数据库最容易瓶颈的地方,这是由数据库的职责所决定的,大部分数据库操作中超过90%的时间都是 IO 操作所占用的,减少 IO 次数是 SQL 优化中需要第一优先考虑,当 ...

  6. PL/SQL表结构/数据的导出

    1.表结构导出 方法一:在sql页面点击表名,进入表编辑页面,点击右下角“查看SQL”按钮,即可看到表结构 方法二:工具--导出用户对象 去掉所有者勾选项,即***.表名:用户名字在其他用户导入数据库 ...

  7. 利用DBExportDoc V1.0 For MySQL自动生成数据库表结构文档

    对于DBA或开发来说,如何规范化你的数据库表结构文档是灰常之重要的一件事情.但是当你的库,你的表排山倒海滴多的时候,你就会很头疼了. 推荐一款工具DBExportDoc V1.0 For MySQL( ...

  8. SQL——表结构或数据的复制

    一.复制表结构及数据到新表 create table new_tb select * from old_tb 二.只复制表结构到新表 create table new_tb select * from ...

  9. SQL 表结构操作

    数据库知识总结(表结构操作) 1.创建表Scores 1 create table Scores --表名 2 (Id int identity(1,1) primary key,--设置主键,并且行 ...

随机推荐

  1. 获取云硬盘列表bug

    有段时间没写博客了,主要还是刚进新公司,多少有点不适应(真会给自己找理由,明明是手里没技术,肚子里没货,能写啥!).前面几个星期都在修一修horizon的bug,这个没啥很大难度,就是用了一个djan ...

  2. ubuntu12.04部署ROR

    刚开始部署这玩意是很折磨的,折腾吧. 确保使用最新版本的linux,否则成功率会大大降低,因为ruby开源社区对于ubuntu的支持总是不兼容旧版本的.笔者部署时的版本是ubuntu12.04 每次都 ...

  3. iOS --提取本地<通讯录>数据 <1>

    #pragma mark - 获取手机所有联系人 - (void)obtainPhoneAllContact { //这个变量用于记录授权是否成功,即用户是否允许我们访问通讯录 ; //声明一个通讯簿 ...

  4. Json工具类库之Gson实战笔记

    日常接口的数据传输通常使用xml或者json来传递数据,xml较庞大但是描述数据能力十分出众,json数据结构较小而且支持ajax传输,xml在数据传输和解析资源占用都比较逊色于json.因此日常的接 ...

  5. 巨蟒python全栈开发linux之centos2

    1.一些命令回顾 在vm中,右击"打开终端",输入命令ifconfig,得到的下图算是一个终端,并且我们可以看到服务器的ip是192.168.34.128 我们通过windows上 ...

  6. 段合并 segments merge 被删除的文档的删除时间

    2.5 段合并 每个索引分为多个“写一次,读多次”的段 write once and read many times  segments 建立索引时,一个段写入磁盘以后就不能更新:被删除的文档的信息存 ...

  7. UTF-8, UTF-16, UTF-32 & BOM

    FAQ - UTF-8, UTF-16, UTF-32 & BOM http://www.unicode.org/faq/utf_bom.html General questions, rel ...

  8. getTrim(strMz)-我的JavaScript函数库-mazey.js

    因为一些旧版本的浏览器对于JS的trim()不支持,所以可以用正则代替此功能. 参数:strMz,字符串,必需. function getTrim(strMz) {    return strMz.r ...

  9. Webstorm如何设置背景色为护眼色(豆绿色)

    本文主要讲webstorm如何设置背景色. 1.打开idea Settings 选择 Editor——Color Scheme——General 注意:如果是Mac,在webstorm界面按键:“co ...

  10. opencv如何打印长图?

    cv::Mat longMap(std::vector<cv::Mat> &set) { int matNumber = set.size(); int width = set[0 ...