PHP备份/还原MySQL数据库的代码


Posted in PHP onJanuary 06, 2011

以下是代码:

一、备份数据库并下载到本地【db_backup.php】

<?php 
// 设置SQL文件保存文件名 
$filename=date("Y-m-d_H-i-s")."-".$cfg_dbname.".sql"; 
// 所保存的文件名 
header("Content-disposition:filename=".$filename); 
header("Content-type:application/octetstream"); 
header("Pragma:no-cache"); 
header("Expires:0"); 
// 获取当前页面文件路径,SQL文件就导出到此文件夹内 
$tmpFile = (dirname(__FILE__))."\\".$filename; 
// 用MySQLDump命令导出数据库 
exec("mysqldump -u$cfg_dbuser -p$cfg_dbpwd --default-character-set=utf8 $cfg_dbname > ".$tmpFile); 
$file = fopen($tmpFile, "r"); // 打开文件 
echo fread($file,filesize($tmpFile)); 
fclose($file); 
exit; 
?>

二、还原数据库【db_restore.php】
<form id="form1" name="form1" method="post" action=""> 
【数据库SQL文件】:<input id="sqlFile" name="sqlFile" type="file" /> 
<input id="submit" name="submit" type="submit" value="还原" /> 
</form> 
<?php 
// 我的数据库信息都存放到config.php文件中,所以加载此文件,如果你的不是存放到该文件中,注释此行即可; 
require_once((dirname(__FILE__).'/../../include/config.php')); 
if ( isset ( $_POST['sqlFile'] ) ) 
{ 
$file_name = $_POST['sqlFile']; //要导入的SQL文件名 
$dbhost = $cfg_dbhost; //数据库主机名 
$dbuser = $cfg_dbuser; //数据库用户名 
$dbpass = $cfg_dbpwd; //数据库密码 
$dbname = $cfg_dbname; //数据库名 set_time_limit(0); //设置超时时间为0,表示一直执行。当php在safe mode模式下无效,此时可能会导致导入超时,此时需要分段导入 
$fp = @fopen($file_name, "r") or die("不能打开SQL文件 $file_name");//打开文件 
mysql_connect($dbhost, $dbuser, $dbpass) or die("不能连接数据库 $dbhost");//连接数据库 
mysql_select_db($dbname) or die ("不能打开数据库 $dbname");//打开数据库 
echo "<p>正在清空数据库,请稍等....<br>"; 
$result = mysql_query("SHOW tables"); 
while ($currow=mysql_fetch_array($result)) 
{ 
mysql_query("drop TABLE IF EXISTS $currow[0]"); 
echo "清空数据表【".$currow[0]."】成功!<br>"; 
} 
echo "<br>恭喜你清理MYSQL成功<br>"; 
echo "正在执行导入数据库操作<br>"; 
// 导入数据库的MySQL命令 
exec("mysql -u$cfg_dbuser -p$cfg_dbpwd $cfg_dbname < ".$file_name); 
echo "<br>导入完成!"; 
mysql_close(); 
} 
?>
PHP 相关文章推荐
php排序算法(冒泡排序,快速排序)
Oct 09 PHP
如何利用PHP执行.SQL文件
Jul 05 PHP
Codeigniter出现错误提示Error with CACHE directory的解决方案
Jun 12 PHP
Yii Framework框架获取分类下面的所有子类方法
Jun 20 PHP
浅析PHP编程中10个最常见的错误
Aug 08 PHP
php表单提交与$_POST实例分析
Jan 26 PHP
33道php常见面试题及答案
Jul 06 PHP
php 利用socket发送HTTP请求(GET,POST)
Aug 24 PHP
php微信开发接入
Aug 27 PHP
php操作access数据库的方法详解
Feb 22 PHP
php生成无限栏目树
Mar 16 PHP
php swoft框架实例用法
Dec 22 PHP
php循环检测目录是否存在并创建(循环创建目录)
Jan 06 #PHP
全局记录程序片段的运行时间 正确找到程序逻辑耗时多的断点
Jan 06 #PHP
Discuz Uchome ajaxpost小技巧
Jan 04 #PHP
php INI配置文件的解析实现分析
Jan 04 #PHP
PHP strncasecmp字符串比较的小技巧
Jan 04 #PHP
php simplexmlElement操作xml的命名空间实现代码
Jan 04 #PHP
array_multisort实现PHP多维数组排序示例讲解
Jan 04 #PHP
You might like
删除及到期域名的查看(抢域名必备哦)
2008/05/14 PHP
用JavaScript脚本实现Web页面信息交互
2006/10/11 Javascript
jquery入门—选择器实现隔行变色实例代码
2013/01/04 Javascript
基于javascript 闭包基础分享
2013/07/10 Javascript
Underscore.js 1.3.3 中文注释翻译说明
2015/06/25 Javascript
基于HTML+CSS+JS实现增加删除修改tab导航特效代码
2016/08/05 Javascript
深入分析javascript中console命令
2016/08/14 Javascript
js调用父框架函数与弹窗调用父页面函数的简单方法
2016/11/01 Javascript
webpack中使用iconfont字体图标的方法
2018/02/22 Javascript
vue列表单项展开收缩功能之this.$refs的详解
2019/05/05 Javascript
node中实现删除目录的几种方法
2019/06/24 Javascript
vue使用axios实现excel文件下载的功能
2020/07/16 Javascript
vue组件添加事件@click.native操作
2020/10/30 Javascript
[02:28]DOTA2亚洲邀请赛 LGD战队巡礼
2015/02/03 DOTA
在MAC上搭建python数据分析开发环境
2016/01/26 Python
Python中的异常处理相关语句基础学习笔记
2016/07/11 Python
python的exec、eval使用分析
2017/12/11 Python
pandas进行数据的交集与并集方式的数据合并方法
2018/06/27 Python
python 切换root 执行命令的方法
2019/01/19 Python
python kafka 多线程消费者&amp;手动提交实例
2019/12/21 Python
pycharm激活码有效到2020年11月底
2020/09/18 Python
分享8款纯CSS3实现的搜索框功能
2017/09/14 HTML / CSS
科尔士百货公司官网:Kohl’s
2016/07/11 全球购物
香港万宁官方海外旗舰店:香港健与美连锁店
2018/09/27 全球购物
德国BA保镖药房中文网:Bodyguard Apotheke
2021/03/09 全球购物
解释一下钝化(Swap out)
2016/12/26 面试题
缴纳养老保险的证明
2014/01/10 职场文书
旷课检讨书2000字
2014/01/14 职场文书
有关环保的标语
2014/06/13 职场文书
小学教师读书活动总结
2014/07/08 职场文书
婚礼证婚人演讲稿
2014/09/13 职场文书
对外汉语专业大学生职业生涯规划范文
2014/09/13 职场文书
2014财产信托协议书范本
2014/11/18 职场文书
归元寺导游词
2015/02/06 职场文书
quickjs 封装 JavaScript 沙箱详情
2021/11/02 Javascript
MySQL Server 层四个日志
2022/03/31 MySQL