热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

[YiiFramework]export/importsqlfilewithPHPinYiiFramework

Thatisjustasimpleexamplehere:<?php****Export&importsql**@au

That is just a simple example here: 

 

/* *
 *
 * Export & import sql
 *
 * @author davidhhuan
 
*/
class DLDatabaseHelper
{
     /* *
     * Export the sql to a file
     *
     * @author davidhhuan
     * @param bool $withData: Whether to export the insert-data at the same time
     * @param bool $dropTable: Add to drop the table or not
     * @param string $saveName: the saved file name
     * @param string $savePath
     *
     * @return mixed
     
*/
     public  static  function export( $withData =  true$dropTable =  false$saveName =  null$savePath =  false)
    {
         $pdo = Yii::app()->db->pdoInstance;
         $mysql = '';
         $statments =  $pdo->query("show tables");
         foreach ( $statments  as  $value
        {
             $tableName =  $value[0];
             if ( $dropTable ===  true)
            {
                 $mysql.="DROP TABLE IF EXISTS ` $tableName`;\n";
            }
             $tableQuery =  $pdo->query("show create table ` $tableName`");
             $createSql =  $tableQuery->fetch();
             $mysql.= $createSql['Create Table'] . ";\r\n\r\n";
             if ( $withData != 0) 
            {
                 $itemsQuery =  $pdo->query("select * from ` $tableName`");
                 $values = "";
                 $items = "";
                 while ( $itemQuery =  $itemsQuery->fetch(PDO::FETCH_ASSOC)) 
                {
                     $itemNames =  array_keys( $itemQuery);
                     $itemNames =  array_map("addslashes",  $itemNames);
                     $items =  join('`,`',  $itemNames);
                     $itemValues =  array_values( $itemQuery);
                     $itemValues =  array_map("addslashes",  $itemValues);
                     $valueString =  join("','",  $itemValues);
                     $valueString = "('" .  $valueString . "'),";
                     $values.="\n" .  $valueString;
                } 
                 if ( $values != "") 
                {
                     $insertSql = "INSERT INTO ` $tableName` (` $items`) VALUES" .  rtrim( $values, ",") . ";\n\r"; 
                     $mysql.= $insertSql
                } 
            } 
             // $mysql.="/*-----------------------------------------------------*/\n\r"; 
        } 

         ob_start();
         echo  $mysql;    
         $content =  ob_get_contents();
         ob_end_clean();
         $content =  gzencode( $content, 9);

         if ( is_null( $saveName))
        {
             $saveName =  date('YmdHms') . ".sql.gz";
        }

         if ( $savePath ===  false)
        {
             header("Content-Type: application/force-download");
             header("Content-Type: application/octet-stream");
             header("Content-Type: application/download");
             header("Content-Description: Download SQL Export");  
             header('Content-Disposition: attachment; filename='. $saveName);
             echo  $content;
             die();
        }
         else
        {
             $filePath =  $savePath ?  $savePath . '/' .  $saveName :  $saveName;
             file_put_contents( $filePath$content);
             echo "Database file saved: " .  $saveName;
        }
    }


     /* *
     * import sql from a *.sql file
     *
     * @author davidhhuan
     * @param string $file: with the path and the file name
     *
     * @return mixed
     
*/
     public  static  function import( $file = '')
    {
         $pdo = Yii::app()->db->pdoInstance;
         try 
        { 
             if ( file_exists( $file)) 
            {
                 $sqlStream =  file_get_contents( $file);
                 $sqlStream =  rtrim( $sqlStream);
                 $newStream =  preg_replace_callback("/\((.*)\)/",  create_function('$matches', 'return str_replace(";"," $$$ ",$matches[0]);'),  $sqlStream); 
                 $sqlArray =  explode(";",  $newStream); 
                 foreach ( $sqlArray  as  $value
                { 
                     if (! empty( $value))
                    {
                         $sql =  str_replace(" $$$ ", ";",  $value) . ";";
                         $pdo-> exec( $sql);
                    } 
                } 
                 // echo "succeed to import the sql data!";
                 return  true;
            } 
        } 
         catch (PDOException  $e
        { 
             echo  $e->getMessage();
             exit
        }
    }
}

 

Have fun with Yii! 


推荐阅读
  • 上图是InnoDB存储引擎的结构。1、缓冲池InnoDB存储引擎是基于磁盘存储的,并将其中的记录按照页的方式进行管理。因此可以看作是基于磁盘的数据库系统。在数据库系统中,由于CPU速度 ... [详细]
  • 本文介绍了在Mac上搭建php环境后无法使用localhost连接mysql的问题,并通过将localhost替换为127.0.0.1或本机IP解决了该问题。文章解释了localhost和127.0.0.1的区别,指出了使用socket方式连接导致连接失败的原因。此外,还提供了相关链接供读者深入了解。 ... [详细]
  • 本文讨论了在数据库打开和关闭状态下,重新命名或移动数据文件和日志文件的情况。针对性能和维护原因,需要将数据库文件移动到不同的磁盘上或重新分配到新的磁盘上的情况,以及在操作系统级别移动或重命名数据文件但未在数据库层进行重命名导致报错的情况。通过三个方面进行讨论。 ... [详细]
  • PDO MySQL
    PDOMySQL如果文章有成千上万篇,该怎样保存?数据保存有多种方式,比如单机文件、单机数据库(SQLite)、网络数据库(MySQL、MariaDB)等等。根据项目来选择,做We ... [详细]
  • 本文主要复习了数据库的一些知识点,包括环境变量设置、表之间的引用关系等。同时介绍了一些常用的数据库命令及其使用方法,如创建数据库、查看已存在的数据库、切换数据库、创建表等操作。通过本文的学习,可以加深对数据库的理解和应用能力。 ... [详细]
  • MySQL语句大全:创建、授权、查询、修改等【MySQL】的使用方法详解
    本文详细介绍了MySQL语句的使用方法,包括创建用户、授权、查询、修改等操作。通过连接MySQL数据库,可以使用命令创建用户,并指定该用户在哪个主机上可以登录。同时,还可以设置用户的登录密码。通过本文,您可以全面了解MySQL语句的使用方法。 ... [详细]
  • 本文介绍了如何使用PHP代码将表格导出为UTF8格式的Excel文件。首先,需要连接到数据库并获取表格的列名。然后,设置文件名和文件指针,并将内容写入文件。最后,设置响应头部,将文件作为附件下载。 ... [详细]
  • 本文介绍了iOS数据库Sqlite的SQL语句分类和常见约束关键字。SQL语句分为DDL、DML和DQL三种类型,其中DDL语句用于定义、删除和修改数据表,关键字包括create、drop和alter。常见约束关键字包括if not exists、if exists、primary key、autoincrement、not null和default。此外,还介绍了常见的数据库数据类型,包括integer、text和real。 ... [详细]
  • MyBatis多表查询与动态SQL使用
    本文介绍了MyBatis多表查询与动态SQL的使用方法,包括一对一查询和一对多查询。同时还介绍了动态SQL的使用,包括if标签、trim标签、where标签、set标签和foreach标签的用法。文章还提供了相关的配置信息和示例代码。 ... [详细]
  • MySQL外键1对多问题的解决方法及实例
    本文介绍了解决MySQL外键1对多问题的方法,通过准备数据、创建表和设置外键关联等步骤,实现了用户分组和插入数据的功能。详细介绍了数据准备的过程和外键关联的设置,以及插入数据的示例。 ... [详细]
  • Python SQLAlchemy库的使用方法详解
    本文详细介绍了Python中使用SQLAlchemy库的方法。首先对SQLAlchemy进行了简介,包括其定义、适用的数据库类型等。然后讨论了SQLAlchemy提供的两种主要使用模式,即SQL表达式语言和ORM。针对不同的需求,给出了选择哪种模式的建议。最后,介绍了连接数据库的方法,包括创建SQLAlchemy引擎和执行SQL语句的接口。 ... [详细]
  • React项目中运用React技巧解决实际问题的总结
    本文总结了在React项目中如何运用React技巧解决一些实际问题,包括取消请求和页面卸载的关联,利用useEffect和AbortController等技术实现请求的取消。文章中的代码是简化后的例子,但思想是相通的。 ... [详细]
  • MySQL中的MVVC多版本并发控制机制的应用及实现
    本文介绍了MySQL中MVCC的应用及实现机制。MVCC是一种提高并发性能的技术,通过对事务内读取的内存进行处理,避免写操作堵塞读操作的并发问题。与其他数据库系统的MVCC实现机制不尽相同,MySQL的MVCC是在undolog中实现的。通过undolog可以找回数据的历史版本,提供给用户读取或在回滚时覆盖数据页上的数据。MySQL的大多数事务型存储引擎都实现了MVCC,但各自的实现机制有所不同。 ... [详细]
  • 本文介绍了在使用Laravel和sqlsrv连接到SQL Server 2016时,如何在插入查询中使用输出子句,并返回所需的值。同时讨论了使用CreatedOn字段返回最近创建的行的解决方法以及使用Eloquent模型创建后,值正确插入数据库但没有返回uniqueidentifier字段的问题。最后给出了一个示例代码。 ... [详细]
  • MySQL插入数据的四种方式及安全性分析
    本文介绍了MySQL插入数据的四种方式:插入完整的行、插入行的一部分、插入多行和插入查询结果,并对其安全性进行了分析。在插入行时,应注意字段的定义和赋值,以提高安全性。同时指出了使用insert语句的不安全性,应尽量避免使用。建议在表中定义相关字段,并根据定义的字段赋予相应的值,以增加插入操作的安全性。 ... [详细]
author-avatar
小鬼shenzhen
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有