应用场景

数据对于网站来说 是非常重要的 一般 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. Mysql经常使用函数汇总

    一. 聚合函数 1.1 求和函数-----SUM() 求和函数SUM( )用于对数据求和.返回选取结果集中全部值的总和. 语法:SELECT SUM(column_name) FROM table_n ...

  2. The current .NET SDK does not support targeting .NET Core 2.1. Either target .NET Core 2.0 or lower, or use a version of the .NET SDK that supports .NET Core 2.1.

    C:\Program Files\dotnet\sdk\2.1.4\Sdks\Microsoft.NET.Sdk\build\Microsoft.NET.TargetFrameworkInferenc ...

  3. C语言 - .c和.h文件的困惑

    本质上没有任何区别. 只不过一般:.h文件是头文件,内含函数声明.宏定义.结构体定义等内容. .c文件是程序文件,内含函数实现,变量定义等内容.而且是什么后缀也没有关系,只不过编译器会默认对某些后缀的 ...

  4. hdoj---Rescue

    Rescue Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 65536/32768K (Java/Other) Total Submis ...

  5. javaBean为什么要implements Serializable

    转自:https://www.cnblogs.com/jqlbj/p/6261592.html 一个对象序列化的接口,一个类只有实现了Serializable接口,它的对象才是可序列化的.因此如果要序 ...

  6. Java Break和continue实现goto功能

    continue实验 1 public class test { static int i =0; public static void main(String[] args) { lable1: w ...

  7. SQL Server阻塞诊断

    在数据仓库维护过程中,经常会出现定时更新程序和查询SQL发生冲突而引起阻塞的情况,需要进行SQL Server诊断. SQL Server诊断一般会用到2个视图:sys.sysprocesses(系统 ...

  8. .net 获取当前网页的的url

    正确的方法是:HttpContext.Current.Request.Url.PathAndQuery1.通过ASP.NET获取 如果测试的url地址是http://www.test.com/test ...

  9. MAVEN学习笔记之Maven插件的应用(4)

    MAVEN学习笔记之Maven插件的应用(4) <build> <pluginManagement> <plugins> <plugin> <gr ...

  10. poj1149 PIGS 最大流(神奇的建图)

    一开始不看题解,建图出错了.后来发现是题目理解错了.  if Mirko wants, he can redistribute the remaining pigs across the unlock ...