yiii 数据库备份导出
应用场景
数据对于网站来说 是非常重要的 一般 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 数据库备份导出的更多相关文章
- Oracle数据库备份---导出与导入
利用windows的cmd命令备份导出数据(也可以连接上sqlplus进行操作)--导出--将数据库orcl完全导出 exp system/oracle@orcl file=c:\oracle_bak ...
- Oracle数据库备份/导出(exp/expd)、导入(imp/impd)
常用的oracle数据库备份(导入/导出)有两种,分别是exp/imp和expd/impd,前者是Orace早期版本带有的导入导出工具,后者是Oracle10g后出现的,下面进行分别介绍! 1.e ...
- oracle数据库备份
--数据库备份--导出 exp userid=shoppingsys/shoppingsys@orcl file=/home/oracle/shoppingsys.dmp log=/home/orac ...
- mysql如何用jsp代码进行数据库备份
mysql如何用jsp代码进行数据库备份 //导出 String mysql="mysqldump -uroot -proot --opt databasename > d:/test ...
- MongoDB导入导出以及数据库备份
-------------------MongoDB数据导入与导出------------------- 1.导出工具:mongoexport 1.概念: mongoDB中的m ...
- MongoDB数据库备份与还原、单表的导入导出
-------------------MongoDB备份与恢复------------------- 1.MongoDB数据库备份 1.语法: mongodump -h dbh ...
- MongoDB导入导出以及数据库备份以及.dat数据
1.导出工具:mongoexport 1.概念: mongoDB中的mongoexport工具可以把一个collection导出成JSON格式或CSV格式的文件.可以通过参数指 ...
- Oracle数据库导入导出 imp/exp备份还原
Oracle数据导入导出imp/exp Oracle数据导入导出imp/exp 在cmd的dos命令提示符下执行,而不是在sqlplus里面,但是格式一定要类似于: imp/exp 用户名/密 ...
- 【转】MongoDB导入导出以及数据库备份
-------------------MongoDB数据导入与导出------------------- 1.导出工具:mongoexport 1.概念: mongoDB中的m ...
随机推荐
- 创建MAVEN项目报错
创建MAVEN项目pom.xml报错 Failure to transfer org.apache.maven:maven-archiver:jar:2.4.2 from http://repo.ma ...
- luogu2261 [CQOI2007] 余数之和
题目大意 求 \[\sum_{i=1}^{n}(k\mod i)\] \(n,k\leq 10^9\). 题解 先只考虑\(n\leq k\)的情况. \[\sum_{i=1}^{n}(k\mod i ...
- Windows下Vim主题变更
默认的好丑! 主题位置. 修改配置文件. 添加主题设置. 新的主题,很高端大气. set fileencodings=utf8,ucs-bom,cp936,big set fileencoding=u ...
- 922. 按奇偶排序数组 II
给定一个非负整数数组 A, A 中一半整数是奇数,一半整数是偶数. 对数组进行排序,以便当 A[i] 为奇数时,i 也是奇数:当 A[i] 为偶数时, i 也是偶数. 你可以返回任何满足上述条件的数组 ...
- 线上出bug了?别怕,这么定位!
摘要: Source Map还是很神奇的. 原文:线上出bug了?别怕,这么定位! 公众号:前端小苑 Fundebug经授权转载并修改,版权归原作者所有. 工作中,生产环境代码是编译后代码,搜集到报错 ...
- CTF-Mayday
打开下载的Mayday.txt文件: 温柔 知足突然好想你 拥抱突然好想你 拥抱温柔 知足温柔 知足突然好想你 拥抱突然好想你 拥抱温柔 知足温柔 知足突然好想你 拥抱突然好想你 拥抱温柔 ...
- unity3d 鼠标事件
using UnityEngine; using System.Collections; public class mouse : MonoBehaviour { //private Vector3 ...
- 有关PHP里的Cookie
会话技术:Cookie,Session: Cookie是客户端技术,服务器把每个用户的数据以Cookie的形式保存在用户各自的浏览器,当用户用浏览器再次访问服务器的web资源时则会带着各自的数据去了: ...
- 使用Word 2010群发邮件
1.建立数据库,这里我使用了excel 字段:电子邮件地址,名字 填写需要发送的数据 2.新建word文档,这里我使用了word2010 点击工具栏邮件 开始邮件合并,电子邮件 选择收件人,使用现有列 ...
- Ruby. Vs . Python
前言:从语言的本质上来分析,我对Ruby持反对态度,毕竟语言是为了交流,在表达的效率层面为了正确性必须适当放弃复杂性.且有句老话说的好,Ruby In Rails 才是语言,而Ruby只是这个语言的工 ...