详解MYSQL的备份还原(PHP实现)
2023-06-13 09:15:00 时间
手把手教你实现MYSQL的备份还原
示例代码用我比较熟悉的PHP,当然你看完并理解了其中的思路,相信你也可以快速地用你熟悉的语言自己写出来。
一、新建dbBackup类,设置默认参数。
复制代码代码如下:
示例代码用我比较熟悉的PHP,当然你看完并理解了其中的思路,相信你也可以快速地用你熟悉的语言自己写出来。
classdbBackup{
public$host="localhost"; //数据库地址
public$user="root"; //登录名
public$pwd=""; //密码
public$database; //数据库名
public$charset="utf8"; //数据库连接编码:mysql_set_charset
}
/**
*连接数据库...
*/
functiondb(){
$con=mysql_connect($this->host,$this->user,$this->pwd);
if(!$con){
die("Couldnotconnect");
}
$db_selected=mysql_select_db($this->database,$con);
if(!$db_selected){
die("Can\"tuseselectdb");
}
mysql_set_charset($this->charset); //设置编码
return$con;
}
/**
*表集合...
*/
functiontblist(){
$list=array();
$rs=mysql_query("SHOWTABLESFROM$this->database");
while($temp=mysql_fetch_row($rs)){
$list[]=$temp[0];
}
return$list;
}
/**
*表结构SQL...
*/
functionsqlcreate(){
$sql="";
$tb=$this->tblist();
foreach($tbas$v){
$rs=mysql_query("SHOWCREATETABLE$v");
$temp=mysql_fetch_row($rs);
$sql.="--表的结构:{$temp[0]}--\r\n";
$sql.="{$temp[1]}";
$sql.=";--<xjx>--\r\n\r\n";
}
return$sql;
}
/**
*数据插入SQL...
*/
functionsqlinsert(){
$sql="";
$tb=$this->tblist();
foreach($tbas$v){
$rs=mysql_query("SELECT*FROM$v");
if(!mysql_num_rows($rs)){//无数据返回
continue;
}
$sql.="--表的数据:$v--\r\n";
$sql.="INSERTINTO`$v`VALUES\r\n";
while($temp=mysql_fetch_row($rs)){
$sql.="(";
foreach($tempas$v2){
if($v2===null){
$sql.="NULL,";
}
else{
$v2=mysql_real_escape_string($v2);
$sql.=""$v2",";
}
}
$sql=mb_substr($sql,0,-1);
$sql.="),\r\n";
}
$sql=mb_substr($sql,0,-3);
$sql.=";--<xjx>--\r\n\r\n";
}
return$sql;
}
2.当字段值为(NULL)时,插入字符为(NULL)而不是("NULL"),没有单引号。3.
/**
*备份...
*@param$filename文件路径
*/
functionbeifen($filename){
$this->db(); //连接数据库
$sql=$this->sqlcreate();
$sql2=$this->sqlinsert();
$data=$sql.$sql2;
returnfile_put_contents($filename,$data);
}
/**
*还原...
*@param$filename文件路径
*/
functionhuanyuan($filename){
$this->db(); //连接数据库
//删除数据表
$list=$this->tblist();
$tb="";
foreach($listas$v){
$tb.="`$v`,";
}
$tb=mb_substr($tb,0,-1);
if($tb){
$rs=mysql_query("DROPTABLE$tb");
if($rs===false){
returnfalse;
}
}
//执行SQL
$str=file_get_contents($filename);
$arr=explode("--<xjx>--",$str);
array_pop($arr);
foreach($arras$v){
$rs=mysql_query($v);
if($rs===false){
returnfalse;
}
}
returntrue;
}
备份示例:
$x=newdbBackup();
$x->database="test";
$rs=$x->beifen("db.sql");
var_dump($rs);
还原示例:
$x=newdbBackup();
$x->database="test";
$rs=$x->huanyuan("db.sql");
var_dump($rs);
完整代码:
classdbBackup{
public$host="localhost"; //数据库地址
public$user="root"; //登录名
public$pwd=""; //密码
public$database; //数据库名
public$charset="utf8"; //数据库连接编码:mysql_set_charset
/**
*备份...
*@param$filename文件路径
*/
functionbeifen($filename){
$this->db(); //连接数据库
$sql=$this->sqlcreate();
$sql2=$this->sqlinsert();
$data=$sql.$sql2;
returnfile_put_contents($filename,$data);
}
/**
*还原...
*@param$filename文件路径
*/
functionhuanyuan($filename){
$this->db(); //连接数据库
//删除数据表
$list=$this->tblist();
$tb="";
foreach($listas$v){
$tb.="`$v`,";
}
$tb=mb_substr($tb,0,-1);
if($tb){
$rs=mysql_query("DROPTABLE$tb");
if($rs===false){
returnfalse;
}
}
//执行SQL
$str=file_get_contents($filename);
$arr=explode("--<xjx>--",$str);
array_pop($arr);
foreach($arras$v){
$rs=mysql_query($v);
if($rs===false){
returnfalse;
}
}
returntrue;
}
/**
*连接数据库...
*/
functiondb(){
$con=mysql_connect($this->host,$this->user,$this->pwd);
if(!$con){
die("Couldnotconnect");
}
$db_selected=mysql_select_db($this->database,$con);
if(!$db_selected){
die("Can\"tuseselectdb");
}
mysql_set_charset($this->charset); //设置编码
return$con;
}
/**
*表集合...
*/
functiontblist(){
$list=array();
$rs=mysql_query("SHOWTABLESFROM$this->database");
while($temp=mysql_fetch_row($rs)){
$list[]=$temp[0];
}
return$list;
}
/**
*表结构SQL...
*/
functionsqlcreate(){
$sql="";
$tb=$this->tblist();
foreach($tbas$v){
$rs=mysql_query("SHOWCREATETABLE$v");
$temp=mysql_fetch_row($rs);
$sql.="--表的结构:{$temp[0]}--\r\n";
$sql.="{$temp[1]}";
$sql.=";--<xjx>--\r\n\r\n";
}
return$sql;
}
/**
*数据插入SQL...
*/
functionsqlinsert(){
$sql="";
$tb=$this->tblist();
foreach($tbas$v){
$rs=mysql_query("SELECT*FROM$v");
if(!mysql_num_rows($rs)){//无数据返回
continue;
}
$sql.="--表的数据:$v--\r\n";
$sql.="INSERTINTO`$v`VALUES\r\n";
while($temp=mysql_fetch_row($rs)){
$sql.="(";
foreach($tempas$v2){
if($v2===null){
$sql.="NULL,";
}
else{
$v2=mysql_real_escape_string($v2);
$sql.=""$v2",";
}
}
$sql=mb_substr($sql,0,-1);
$sql.="),\r\n";
}
$sql=mb_substr($sql,0,-3);
$sql.=";--<xjx>--\r\n\r\n";
}
return$sql;
}
}
//备份
//$x=newdbBackup();
//$x->database="test";
//$rs=$x->beifen("db.sql");
//var_dump($rs);
//还原
//$x=newdbBackup();
//$x->database="test";
//$rs=$x->huanyuan("db.sql");
//var_dump($rs);
相关文章
- linux下mysql怎么备份_Linux下如何进行MySQL数据库备份和导入
- PHP与MySQL:紧密结合的良好伙伴(php与mysql关系)
- MySQL数据库命名规则:简明指南(mysql数据库命名规则)
- 触发MySQL数据库同步动作(mysql同步触发器)
- MySQL数据库灵活实用的备份服务器(mysql备份服务器)
- MySQL:配置Binlog实现备份及恢复(mysql配置binlog)
- MySQL数据库:掌握路径即可掌控数据(mysql数据库的路径)
- 查询使用PHP运行MySQL查询的步骤(php运行mysql)
- MySQL备份:记住重要的位置(mysql备份位置)
- MySQL异地备份解决方案:简单可靠的工具(mysql异地备份工具)
- MySQL分时统计:洞悉系统性能关键指标(mysql分时统计)
- PHP7支持MySQL:提升Web开发效率(php7支持mysql)
- PHP连接MySQL数据库的实现代码分享(php连接mysql代码)
- MySQL 大表优化:如何删除数据(mysql大表删除数据)
- PHP如何正确输出MySQL中文字符避免乱码?(php输出mysql乱码)
- PHP与MySQL结合使用实现关联查询的方法(php关联mysql查询)
- MySQL访问权限:细节非常重要(mysql访问权限设置)
- MySQL大数据库备份:简单、快捷、可靠(mysql大数据库备份)
- MySQL远程备份操作详解(mysql远程备份)
- MySQL中快捷实现DMP文件导入(dmp文件导入mysql)
- 远程备份:传送MySQL数据库安全可靠(远程备份mysql数据库)
- MySQL的别名使用简介(mysql中别名的使用)
- MySQL视图提高数据分析效率的好帮手(mysql _视图)
- 如何使用PHP中的MySQL数组(mysql_array)
- MySQL上传CSV文件时出现错误(mysql上传csv出错)
- 如何解决MySQL建立表失败问题(mysql不能建立表)
- 深入了解MySQL为什么MySQL不支持并行操作(mysql不支持并行)