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. php zend studio 如何导入已经存在的项目

    点击 左上的   file->import ->General->在选择第二个[  Exissting ....]

  2. python 循环内部添加多个条件判断会出现越界

    1.循环遍历数组是,想添加条件修改时,只删除第一个 # -*- coding: utf-8 -*- a=[11,22,33,44,55] for i in a: if i == 11 or i ==2 ...

  3. SET ANSI_NULLS ON 在T-SQL中是什么意思

    from:https://www.cnblogs.com/kekong/p/6731321.html Transact-SQL 支持在与空值进行比较时,允许比较运算符返回 TRUE 或 FALSE. ...

  4. JS原生追加子节点

    var fragment = document.createDocumentFragment(); li = document.createElement('li'); li.className = ...

  5. TOC之关键链项目管理遇到软件project7原则

    编著者:张克强    微博:张克强-敏捷307 软件project7原则简单介绍 美国著名软件project专家鲍伊姆(B.W.Boehm,也又另译为勃姆)在总结软件project准则和信条的基础上, ...

  6. php简单工厂模式

    工厂类中有一个创建对象的方法,根据传入参数的不同来生成不同的对象 class Operation extends Model{ private $numberA; private $numberB; ...

  7. Python类基础知识(面向对象基础)

    #首先 我们需要了解 面向过程是什么 面向对象是什么 我们为什么需要使用面向对象 面向过程:根据业务逻辑从上到下写垒代码 面向对象:根据代码对函数进行分类和封装 区别:解决问题的逻辑不同,但是都能解决 ...

  8. 基于Boost无锁队列实现的内存池

  9. Convert.ToInt32(string '000000003') 变成了 3

    Convert.ToInt32(string '000000003') 变成了 3 但是在查询的时候需要用的是string 这里的convert.toint32 反而起了坏作用,不是所有的时候都要用c ...

  10. SharePoint 离线安装

    SharePoint 离线安装,主要是AppFrabic服务出错,可以使用下来命令: "X:\WindowsServerAppFabricSetup_x64.exe" /i Cac ...