应用场景

数据对于网站来说 是非常重要的 一般 cms 后台 都有 数据备份功能。使用Yii 的第三方拓展 可以快速开发。

spanjeta/yii2-backup

spanjeta/yii2-backup 是基于Yii2 的一款 第三方扩展,安装配置一下可以正常访问,也可以很方便自定义。在开发过程中,因为备份后在 phpMyAdmin 导入出现一些问题。所以做了一些修改。

安装spanjeta/yii2-backup

1、写入扩展包

在项目找到composer.json 打开加入

"require": {
"spanjeta/yii2-backup": "*"
},

2、安装扩展

打开cmd 命令 找到项目目录下 执行 (注意:必须先安装 composer ,否则失败)

composer update

配置spanjeta/yii2-backup

找到 \backend\config\main.php 打开加入以下代码

return[
'modules' => [
'backup' => [
'class' => 'spanjeta\modules\backup\Module',
],
],
]

访问测试数据备份功能

确保你的项目有创建目录的权限,访问 index.php?r=backup 到此扩展安装完毕

修改spanjeta/yii2-backup

默认安装 在\vendor 目录下,找到 \spanjeta\yii2-backup\controllers\ 打开 DefaultController.php 文件,修改以下代码

1、找到 getData() 直接覆盖即可

   public function getData($tableName) {
$sql = 'SELECT * FROM ' . $tableName;
$cmd = Yii::$app->db->createCommand ( $sql );
$dataReader = $cmd->query();
$data_string="";
foreach ( $dataReader as $data ) { foreach ($data as $key => $value) {
if(empty($value)){ unset($data[$key]);
}else{
$datas[$key]=mysql_real_escape_string($value);
}
} $itemNames = array_keys ( $datas ); $itemNames = array_map ( "addslashes", $itemNames ); $items = join ( '`,`', $itemNames ); $itemValues = array_values ( $datas ); $valueString = join ( "','", $itemValues ); $valueString = "('" . $valueString . "'),"; $values = "\n" . $valueString; if ($values != "") {
$data_string .= "INSERT INTO `$tableName` (`$items`) VALUES" . rtrim ( $values, "," ) . ";" . PHP_EOL;
} } if (empty($data_string)){
return null;
} if ($this->fp) {
$this->writeComment ( 'TABLE DATA ' . $tableName );
$final = $data_string . PHP_EOL . PHP_EOL . PHP_EOL; fwrite ( $this->fp, $final );
} else { $this->tables [$tableName] ['data'] = $data_string;
return $data_string;
}
}

2、搜索以下代码,并注释掉

fwrite ( $this->fp, 'SET AUTOCOMMIT=0;' . PHP_EOL );

3、找到 actionCreate() 直接覆盖即可

  public function actionCreate() {
$tables = $this->getTables ();
if (! $this->StartBackup ()) {
Yii::$app->user->setFlash ( 'success', "Error" );
return $this->render ( 'index' );
} foreach ( $tables as $tableName ) {
$this->getColumns ( $tableName );
$this->getData ( $tableName ); }
$this->EndBackup (); $this->redirect ( array (
'index'
) );
}

yiii 数据库备份导出的更多相关文章

  1. Oracle数据库备份---导出与导入

    利用windows的cmd命令备份导出数据(也可以连接上sqlplus进行操作)--导出--将数据库orcl完全导出 exp system/oracle@orcl file=c:\oracle_bak ...

  2. Oracle数据库备份/导出(exp/expd)、导入(imp/impd)

    ​ 常用的oracle数据库备份(导入/导出)有两种,分别是exp/imp和expd/impd,前者是Orace早期版本带有的导入导出工具,后者是Oracle10g后出现的,下面进行分别介绍! 1.e ...

  3. oracle数据库备份

    --数据库备份--导出 exp userid=shoppingsys/shoppingsys@orcl file=/home/oracle/shoppingsys.dmp log=/home/orac ...

  4. mysql如何用jsp代码进行数据库备份

    mysql如何用jsp代码进行数据库备份 //导出 String mysql="mysqldump -uroot -proot --opt databasename > d:/test ...

  5. MongoDB导入导出以及数据库备份

    -------------------MongoDB数据导入与导出------------------- 1.导出工具:mongoexport     1.概念:         mongoDB中的m ...

  6. MongoDB数据库备份与还原、单表的导入导出

    -------------------MongoDB备份与恢复------------------- 1.MongoDB数据库备份     1.语法:         mongodump -h dbh ...

  7. MongoDB导入导出以及数据库备份以及.dat数据

    1.导出工具:mongoexport     1.概念:         mongoDB中的mongoexport工具可以把一个collection导出成JSON格式或CSV格式的文件.可以通过参数指 ...

  8. Oracle数据库导入导出 imp/exp备份还原

    Oracle数据导入导出imp/exp   Oracle数据导入导出imp/exp 在cmd的dos命令提示符下执行,而不是在sqlplus里面,但是格式一定要类似于:   imp/exp 用户名/密 ...

  9. 【转】MongoDB导入导出以及数据库备份

    -------------------MongoDB数据导入与导出------------------- 1.导出工具:mongoexport     1.概念:         mongoDB中的m ...

随机推荐

  1. 【有奖征资源,分享有内涵】贡献你的CSDN博文和下载资源,不断更新中

    我们收集了CSDN热心博主的博文 和相关下载资源.这些可爱博主上传了免积分的CSDN资源,并贡献了相关的用法,改进策略,进行了翔实的分析.感谢博主的贡献.并期待有很多其它这种好人! 我们特推出活动&q ...

  2. JPA相关注解

    JPA注解 一.基本注解 1.表相关   @Entity   仅仅要加了这个注解就具备了表和实体的映射关系,表名就是实体名   @Table(name="表名")    一般和实体 ...

  3. Linux命令(十一)——Shell程序设计二(循环控制语句)

    1.if语句 (1)两路分支的if语句 (2)多路条件判断分支的if语句 2.测试语句 (1)文件测试 (2)字符串测试 (3)数值测试 (4)用逻辑操作符进行组合的测试语句 3.case语句 4.f ...

  4. 杂项-JAVA:MVP

    ylbtech-杂项-JAVA:MVP 简称:MVP 全称:Model-View-Presenter :MVP 是从经典的模式MVC演变而来,它们的基本思想有相通的地方:Controller/Pres ...

  5. Orcal的JDBC数据连接方式

    package cn.com.db; import java.sql.Connection; import java.sql.DriverManager; import java.sql.Prepar ...

  6. SQLServer 添加序号列

    select ROW_NUMBER()OVER(ORDER BY 用来排序的列的列名),XXX,XXX from XXX 按照原始顺序: ROW_NUMBER()OVER(ORDER BY (sele ...

  7. CSS3 动画 思维导图

    思维导图在新窗口打开浏览

  8. 【Python3】POP3协议收邮件

    初学Python3,做一个email的例子,虽然知道做的很渣渣,还是分享一下吧 POP3协议 POP3全称Post Official Protocol3,即邮局协议的第三个版本,它规定了怎样将个人计算 ...

  9. 统计之都 http://cos.name/

    http://cos.name/ IMS:一个洲际人际交流网络(为学生免费提供会员资格) 原文链接:http://cos.name/2014/07/ims-a-cross-continent-huma ...

  10. Boost字符串处理

    (1):Boost学习之格式化输出--format: 原文链接:http://www.cnblogs.com/lzjsky/archive/2011/05/05/2037327.html 此文非常详细 ...