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 ...
随机推荐
- 【有奖征资源,分享有内涵】贡献你的CSDN博文和下载资源,不断更新中
我们收集了CSDN热心博主的博文 和相关下载资源.这些可爱博主上传了免积分的CSDN资源,并贡献了相关的用法,改进策略,进行了翔实的分析.感谢博主的贡献.并期待有很多其它这种好人! 我们特推出活动&q ...
- JPA相关注解
JPA注解 一.基本注解 1.表相关 @Entity 仅仅要加了这个注解就具备了表和实体的映射关系,表名就是实体名 @Table(name="表名") 一般和实体 ...
- Linux命令(十一)——Shell程序设计二(循环控制语句)
1.if语句 (1)两路分支的if语句 (2)多路条件判断分支的if语句 2.测试语句 (1)文件测试 (2)字符串测试 (3)数值测试 (4)用逻辑操作符进行组合的测试语句 3.case语句 4.f ...
- 杂项-JAVA:MVP
ylbtech-杂项-JAVA:MVP 简称:MVP 全称:Model-View-Presenter :MVP 是从经典的模式MVC演变而来,它们的基本思想有相通的地方:Controller/Pres ...
- Orcal的JDBC数据连接方式
package cn.com.db; import java.sql.Connection; import java.sql.DriverManager; import java.sql.Prepar ...
- SQLServer 添加序号列
select ROW_NUMBER()OVER(ORDER BY 用来排序的列的列名),XXX,XXX from XXX 按照原始顺序: ROW_NUMBER()OVER(ORDER BY (sele ...
- CSS3 动画 思维导图
思维导图在新窗口打开浏览
- 【Python3】POP3协议收邮件
初学Python3,做一个email的例子,虽然知道做的很渣渣,还是分享一下吧 POP3协议 POP3全称Post Official Protocol3,即邮局协议的第三个版本,它规定了怎样将个人计算 ...
- 统计之都 http://cos.name/
http://cos.name/ IMS:一个洲际人际交流网络(为学生免费提供会员资格) 原文链接:http://cos.name/2014/07/ims-a-cross-continent-huma ...
- Boost字符串处理
(1):Boost学习之格式化输出--format: 原文链接:http://www.cnblogs.com/lzjsky/archive/2011/05/05/2037327.html 此文非常详细 ...