大致步骤如下:
-
从数据库中拿到要备份的数据表
//拿数据表 $sql = 'show tables'; $tables_in_db = Db::query($sql);//你需要一个模型 (没有?下面附一个 这里是Tp5的模型) dump($tables_in_db);//打印
下面是打印结果
//遍历这个数组 调整一下结构 最后得到一个包含表名称的索引数组 $tables = array(); foreach ( $tables_in_db as $k =>$v ) { $tables[$k] = $v['Tables_in_'.$dbname];//$dbname 是xxx 则键名是 Tables_in_xxx }
-
拿到表结构
$sql = "show create table `tableName`";//tableName 要查看的表名 $create_table = Db::query($sql); dump($create_table );
打印结果如下
很关键, “Create Table” 字段里的值, 就是你的表结构!! -
拿对应表的数据 (这个没什么可说的)
接下来是重点了
将表结构和对应数据记录保存到 一个名为 .sql 的文件里
还原的话就是从这个文件中拿sql语句 执行
下面是自己写的一个 一键备份, 和一键还原(很弱!=.= ,没有分包什么的)
.sql 里的文件格式是模仿 Navicat for MySQL 导出的sql 文件 来写的
顺便附一个数据库操作类
https://blog.csdn.net/csdn_zhongwu/article/details/84257921
<?php
/**
* 数据库备份
*/
class Backup
{
private $tables = array();//要备份的数据表
private $path;//文件保存路径
private $dbname;//database name;
private $model;//数据库模型对象
function __construct()
{
$this->model = new Db();//你需要一个模型 请自行解决
$this->path = ROOT.'/sql/';//常量ROOT 定义的项目根目录 请自行解决
$this->dbname = DB_DBNAME;// database 名称 请自行解决
$this->check_path();
$this->get_tables();
}
//备份方法
public function backupAll ()
{