zoukankan      html  css  js  c++  java
  • tp框架简易导出数据库

    
    
    类库,将以下文件放入vendor文件夹中,命名空间vendor,使用think下的model类
    <?php
    /** 
     *  描述:基于ThinkPHP框架的Mysql数据库导出类 
     *  日期:2012-07-15 
     *  作者:龚辟愚
      
    */ namespace Vendor; use ThinkModel; class DBExport { /** * @description 获取当前数据库的所有表名。 * @static * @return array */ public function t(){ echo "a"; } static protected function gettables() { $dbName=C('DB_NAME'); $result=M()->query("SHOW FULL tableS FROM `{$dbName}` WHERE table_Type = 'BASE table'"); foreach ($result as $v){ $tbArray[]=$v['tables_in_'.C('DB_NAME')]; } return $tbArray; } static protected function getViews() { $dbName=C('DB_NAME'); $result=M()->query("SHOW FULL tableS FROM `{$dbName}` WHERE table_Type = 'VIEW'"); foreach ($result as $v){ $tbArray[]=$v['tables_in_'.C('DB_NAME')]; } return $tbArray; } /** * @description 导出SQL数据,但不包含表创建代码。 * @static * @return string */ static public function ExportAllData() { $tables = self::gettables(); $arrAll = array( "SET FOREIGN_KEY_CHECKS=0;", self::BuildAllTriggerDropSql(), self::BuildtableSql(), self::BuildViewSql() ); $tbl = new Model(); foreach($tables as $table) { $arrAll[]=" DELETE FROM {$table};"; /* $rs = $tbl->query("SHOW COLUMNS FROM {$table}"); $arrFields = array(); foreach ($rs as $k=>&$v){ $arrFields[] = "`{$v['Field']}`"; } $sqlFields = implode($arrFields,","); */ $rs=$tbl->query("select * from `{$table}`"); foreach ($rs as $k=>&$v){ $arrValues = array(); foreach($v as $key=>$val) { if(is_numeric($val)){ $arrValues[]=$val; }else if(is_null($val)){ $arrValues[]='NULL'; }else{ $arrValues[]="'".addslashes($val)."'"; } } $arrAll[] = "INSERT INTO `{$table}` VALUES (".implode(',',$arrValues).");"; } } $arrAll[]=self::BuildTriggerCreateSql(); return implode(" ",$arrAll); } static protected function BuildtableSql() { $tables = self::gettables(); $arrAll = array(); foreach($tables as &$val){ $rs = M()->query("SHOW CREATE table `{$val}`"); $tbSql = preg_replace("#CREATE(.*)\s+table#","CREATE table",$rs[0]['Create table']); $arrAll[] = "DROP table IF EXISTS `{$rs[0]['table']}`; {$tbSql}; "; } return implode(" ",$arrAll); } static protected function BuildViewSql() { $views = self::getViews(); $arrAll = array(); foreach($views as &$val){ $rs = M()->query("SHOW CREATE VIEW `{$val}`"); $tbSql = preg_replace("#CREATE(.*)\s+VIEW#","CREATE VIEW",$rs[0]['Create View']); $arrAll[] = "DROP VIEW IF EXISTS `{$rs[0]['View']}`; {$tbSql}; "; } return implode(" ",$arrAll); } /** * @description 如果存在触发器,生成删除代码。原因是:插入数据的时候可能会受到触发器影响。 * @static * @return string */ static public function BuildAllTriggerDropSql() { $rs = M()->query("show triggers"); $arrAll = array(); foreach ($rs as $k=>&$v) { $arrSql = array( 'DROP TRIGGER IF EXISTS `',$v['Trigger'],'`;' ); $arrAll[] = implode('',$arrSql); } return implode(" ",$arrAll); } /** * @description 生成所有触发器的创建代码。 * @static * @return string */ static protected function BuildTriggerCreateSql() { $rs = M()->query("show triggers"); $arrAll = array(); foreach ($rs as $k=>&$v) { $arrSql = array( 'CREATE TRIGGER `',$v['Trigger'],'` ',$v['Timing'],' ',$v['Event'],' ON `', $v['table'],'` FOR EACH ROW ',$v['Statement'],';' ); $arrAll[] = implode('',$arrSql); } return implode(" ",$arrAll); } }
    //调用方法    
    
    public function   tiaoshi(){
    header('Content-type: text/plain; charset=UTF-8');  
    $dbName = C('DB_NAME');  
    header("Content-Disposition: attachment; filename="{$dbName}.sql""); 
    vendor('DBExport','','.class.php');
    
    
    echo vendorDBExport::ExportAllData();
        }
  • 相关阅读:
    mybatis批量更新报错
    Axure8破解码
    小程序开发-Step1
    2018新年计划
    java 写 Excel(不生成实体文件,写为流的形式)
    git 生成公钥 使用命令行无需输入用户名密码(windows)
    Node.js:上传文件,服务端如何获取文件上传进度
    Express:模板引擎深入研究
    windows下nginx的安装及使用
    Chrome开发者工具详解-Network面板
  • 原文地址:https://www.cnblogs.com/ch459742906/p/6160206.html
Copyright © 2011-2022 走看看