thinkphp5实现mysql数据库备份
其实备份数据库说白了就是向一个.sql的文档中写入一条一条的sql命令
public function back()
{ $to_file_name="backsql.sql";
//数据库中有哪些表
$tables=Db::query('SHOW TABLES ');
$tablelist=array();
foreach($tables as $v){
foreach($v as $vv){
$tablelist[]=$vv;
} }
echo "正在备份,请耐心等待...<br/>";
$info = "-- ----------------------------\r\n";
$info .= "-- 日期:".date("Y-m-d H:i:s",time())."\r\n";
$info .= "-- 仅用于测试和学习,本程序不适合处理超大量数据\r\n";
$info .= "-- ----------------------------\r\n\r\n";
file_put_contents($to_file_name,$info,FILE_APPEND);
//将每个表的表结构导出到文件
foreach($tablelist as $val){ $res = Db::query('show create table '.$val); foreach($res as $v){
$newres=$v['Create Table'];
} $info = "-- ----------------------------\r\n";
$info .= "-- Table structure for `".$val."`\r\n";
$info .= "-- ----------------------------\r\n";
$info .= "DROP TABLE IF EXISTS `".$val."`;\r\n";
$sqlStr = $info.$newres.";\r\n\r\n";
//追加到文件
file_put_contents($to_file_name,$sqlStr,FILE_APPEND); } //将每个表的数据导出到文件
foreach($tablelist as $val){
$sql = "select * from ".$val;
$res = Db::query('select * from '.$val); //如果表中没有数据,则继续下一张表
if(count($res)<1) continue;
//
$info = "-- ----------------------------\r\n";
$info .= "-- Records for `".$val."`\r\n";
$info .= "-- ----------------------------\r\n";
file_put_contents($to_file_name,$info,FILE_APPEND);
//读取数据 foreach($res as $v){
$sqlstr="INSERT INTO `".$val."` VALUES (";
foreach($v as $vv){
//将数据中的单引号转义,否则还原时会出错
$newvv= str_replace("'","\'",$vv);
$sqlstr .="'".$newvv."', ";
}
//去掉最后一个逗号和空格
$sqlstr = substr($sqlstr,0,strlen($sqlstr)-2);
$sqlstr .= ");\r\n";
file_put_contents($to_file_name,$sqlstr,FILE_APPEND);
} file_put_contents($to_file_name,"\r\n",FILE_APPEND);
} echo "OK!"; }
thinkphp5实现mysql数据库备份的更多相关文章
- Xtrabackup原理及使用innobackupex进行MySQL数据库备份恢复
Xtrabackup是由percona提供的mysql数据库备份工具,据官方介绍,这也是世界上惟一一款开源的能够对innodb和xtradb数据库进行热备的工具. Xtrabackup中主要包含两个工 ...
- TODO:MongoDB MySQL数据库备份
TODO:MongoDB MySQL数据库备份 1. MongoDB使用命令备份 mongodump进行整个数据库备份,主要用到的命令参数: -d 要备份的数据库 -o 输出的路径 ./mongodu ...
- Java实现MySQL数据库备份(二)
权声明:本文为博主原创文章,未经博主允许不得转载. 博客<Java实现MySQL数据库备份(一)>使用I/O流的方式实现了MySQL数据库的备份,这种方法比较繁杂,下面介绍另一种备份MyS ...
- Java实现MySQL数据库备份(一)
下班了,利用闲暇时间总结一下如何使用Java语言实现MySQL数据库备份: import java.io.BufferedReader; import java.io.File; import jav ...
- MySQL数据库备份命令
原文参考:MySQL数据库备份的命令 - 司南 mysqldump -hhostname -uusername -ppassword databasename > backupfile.sql备 ...
- MySQL数据库备份和还原的常用命令
其实很多情况下mysql备份就是采用了这些命令,例如: mysql导入和导出数据 linux自动定时备份web程序和mysql数据库 备份MySQL数据库的命令 mysqldump -hhostnam ...
- Java实现mysql数据库备份
Runtime是一个与JVM运行时环境有关的类,这个类是Singleton的. Runtime.getRuntime()可以取得当前JVM的运行时环境,这也是在Java中唯一一个得到运行时环境的方法. ...
- Mysql数据库备份和还原常用的命令
Mysql数据库备份和还原常用的命令是进行Mysql数据库备份和还原的关键,没有命令,什么都无从做起,更谈不上什么备份还原,只有给系统这个命令,让它去执行,才能完成Mysql数据库备份和还原的操作,下 ...
- MySQL数据库备份还原(基于binlog的增量备份)
MySQL数据库备份还原(基于binlog的增量备份) 一.简介 1.增量备份 增量备份 是指在一次全备份或上一次增量备份后,以后每次的备份只需备份与前一次相比增加或者被修改的文件.这就意味 ...
随机推荐
- ES6中promise总结
一.什么是ES6的Promise 讲太多也没有.直接在打印出来就好,console.dir(Promise) Promise 是一个构造函数,自身有all, reject, resolve 这几个眼熟 ...
- 使用meld作为git的辅助工具
原文链接: https://lrita.github.io/2017/05/14/use-meld-as-git-tool/?hmsr=toutiao.io&utm_medium=toutia ...
- js修改div标签中的内容
<div id='divId'>初始文字</div> <script> $(document).ready(function(e){ $('#divId').htm ...
- ubuntu上swift开发学习2
使用包管理器(package manager)创建一个可执行的项目 1. 创建一个Hello目录,然后进入目录 $ mkdir Hello $ cd Hello 2. 使用包初始化命令,参数表示创建一 ...
- Python成长之路第一篇(2)__初识列表和元组
可以将列表和元组当成普通的“数组”,他能保存任意数量任意类型的Python对象,和数组一样都是通过数字0索引访问元素,列表和元组可以存储不同类型的对象,列表和元组有几处重要区别.列表元素用([])包括 ...
- HDU 3853 LOOPS:期望dp【网格型】
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3853 题意: 有一个n*m的网格. 给出在每个格子时:留在原地.向右走一格,向下走一格的概率. 每走一 ...
- codeforces 651E E. Table Compression(贪心+并查集)
题目链接: E. Table Compression time limit per test 4 seconds memory limit per test 256 megabytes input s ...
- Posix线程编程指南(3)
这是一个关于Posix线程编程的专栏.作者在阐明概念的基础上,将向您详细讲述Posix线程库API.本文是第三篇将向您讲述线程同步. 一.互斥锁尽管在Posix Thread中同样可以使用IPC的信号 ...
- python下setuptools安装
python下的setuptools带有一个easy_install的工具,在安装python的每三方模块.工具时很有用,也很方便.安装setuptools前先安装pip,请参见<pytho ...
- sed 中带变量的情况
#teststr="IBM" #sed -n '/' "$teststr" '/=' testfile.txt 在sed中使用变量 通常,我们使用sed进行变量 ...