php 数据库备份还原
public function exportDatabase(){
$data = input();
//备份数据库
$host="192.168.0.123";
$user="root";//数据库账号
$password="root";//数据库密码
$dbname="emblog";//数据库名称
//这里的账号、密码、名称都是从页面传过来的
if(@!mysql_connect($host,$user,$password)) //连接mysql数据库
{
echo '数据库连接失败,请核对后再试';
exit;
}
if(!mysql_select_db($dbname)) //是否存在该数据库
{
echo '不存在数据库:'.$dbname.',请核对后再试';
exit;
}
mysql_query("set names 'utf8'");
$mysql= "set charset utf8;\r\n";
///////////////若要备份数据库里全部的数据表///选用//////////////////////////////////////
// $q1=mysql_query("show tables"); //显示表名
// while($t=mysql_fetch_array($q1)){
// $table=$t[0];
/////////////若要根据数据表名来备份数据///////选用////////////////////////
foreach($input['table_box'] as $value){
$table=$value;
/////////////////////
// DROP TABLE IF EXISTS `article`;
$q2=mysql_query("show create table `$table`");
$sql=mysql_fetch_array($q2);
$mysql.="DROP TABLE IF EXISTS `".$sql['Table']."`;\r\n".$sql['Create Table'].";\r\n";
$q3=mysql_query("select * from `$table`");
while($data=mysql_fetch_assoc($q3)){ //mysql_fetch_assoc()函数从结果集中取得一行作为关联数组。
$keys=array_keys($data);
$keys=array_map('addslashes',$keys);
$keys=join('`,`',$keys);
$keys="`".$keys."`";
$vals=array_values($data);
$vals=array_map('addslashes',$vals);
$vals=join("','",$vals);
$vals="'".$vals."'";
$mysql.="insert into `$table`($keys) values($vals);\r\n";
}
}
// dump($table.$keys);die; // 这里就已经获取到了所有的表以及内容
if (!file_exists('static/admin/data')){
@mkdir('static/admin/data');
}
$filename="data/".$dbname.date('YmdHis').".sql"; //存放路径,默认存放到项目最外层
$fp = fopen($filename,'w'); //fopen() 函数打开文件或者 URL。
fputs($fp,$mysql); //fputs() 函数写入文件(可安全用于二进制文件)
fclose($fp); //fclose() 函数关闭一个打开文件。
echo "<script>alert('备份成功');location.href='index'</script>";
}
这里的数据恢复需要和上面的数据备份配套
这里的数据还原需要传文件名以及文件路径
//数据恢复
public function inputDatabase($name){
$filename = $name;
$host="localhost"; //主机名
$user="root"; //MYSQL用户名
$password="root"; //密码
$dbname="emblog"; //在此指定您要恢复的数据库名,不存在则必须先创建,请自已修改数据库名
mysql_connect($host,$user,$password);
mysql_select_db($dbname);
$mysql_file="static/admin/data/".$filename; //指定要恢复的MySQL备份文件路径,请自已修改此路径
// print_r($mysql_file);die;
$this->restore($mysql_file); //执行MySQL恢复命令
}
function restore($fname)
{
if (file_exists($fname)) {
$sql_value="";
$cg=0;
$sb=0;
$sqls=file($fname);
foreach($sqls as $sql)
{
$sql_value.=$sql;
}
$a=explode(";\r\n", $sql_value); //根据";\r\n"条件对数据库中分条执行
$total=count($a)-1;
mysql_query("set names 'utf8'");
for ($i=0;$i<$total;$i++)
{
mysql_query("set names 'utf8'");
//执行命令
if(mysql_query($a[$i]))
{
$cg+=1;
}
else
{
$sb+=1;
$sb_command[$sb]=$a[$i];
}
}
echo "操作完毕,共处理 $total 条命令,成功 $cg 条,失败 $sb 条";
//显示错误信息
if ($sb>0)
{
echo "<hr><br><br>失败命令如下:<br>";
for ($ii=1;$ii<=$sb;$ii++)
{
echo "<p><b>第 ".$ii." 条命令(内容如下):</b><br>".$sb_command[$ii]."</p><br>";
}
} //-----------------------------------------------------------
}else{
echo "MySQL备份文件不存在,请检查文件路径是否正确!";
}
}
php 数据库备份还原的更多相关文章
- MySQL数据库备份还原(基于binlog的增量备份)
MySQL数据库备份还原(基于binlog的增量备份) 一.简介 1.增量备份 增量备份 是指在一次全备份或上一次增量备份后,以后每次的备份只需备份与前一次相比增加或者被修改的文件.这就意味 ...
- MSSQL2008数据库备份还原和数据恢复
原文:MSSQL2008数据库备份还原和数据恢复 序言 一直想写一篇关于数据库备份与恢复的文章,但基于能力的有限对数据库认知的有限怕不足以准确的表达,最后思考很久还是决定把自己的一些理解写出来供大 ...
- SQL server数据库备份还原问题备忘(亲测有效)
问题一:SQL server数据库备份还原方法 http://www.cnblogs.com/zgqys1980/archive/2012/07/04/2576382.html 问题二:无法执行 BA ...
- 第二百九十节,MySQL数据库-MySQL命令行导出导入数据库,数据库备份还原
MySQL命令行导出导入数据库,数据库备份还原 MySQL命令行导出数据库:1,进入MySQL目录下的bin文件夹:cd MySQL中到bin文件夹的目录如我输入的命令行:cd C:\Program ...
- 查询清除SQL Server数据库备份还原历史记录
曾经遇到过一个用户MSDB数据库非常大,让我帮忙查查是什么原因.使用sp_spaceused找出了所有表的数据大小,发现问题是SQL Server备份和还原历史表数据太大.用户经常会做日志备份,但是从 ...
- [整理] C#调用SQLDMO.DLL时间数据库备份 / 还原。 (香神无涯) // C#实现SQLSERVER2000数据库备份还原的两种方法 (带进度条)
/// <summary>/// 通过调用MSSQL的SQLDMO.DLL文件来实现备份数据库/// 1.首先在在项目中引用SQLDMO.DLL文件./// 2.在引用中的SQLDMO.D ...
- C#中数据库备份还原 精简
C#中数据库备份还原 使用前要导入SQLDMO.dll(在com组件中导入Microsoft SQLDMO Object Library即可) /// /// DbOper类,主要应用SQLD ...
- Oracle数据库备份还原笔记
Oracle数据库备份还原笔记 通过查阅资料知道Oracle备份还原的方式有三种.分别的是导出/导入.热备份和冷备份.导出/导入是一种逻辑备份.而热备份和冷备份是物理备份.[参考资料(https:// ...
- SQL Server数据库备份&还原
一.备份 1.登录数据库 2.找到要还原的数据库 右键-任务-备份-添加(路径只写一个,刚开始二个总是报错)-确定 二.还原数据库 这个之间报错了二次 1.报错1:备份集中的数据库与现有数据库“XXX ...
- 数据库备份还原——mysqlbackup与mysqldump对比测试
1 环境描述 1.1 硬件环境 服务器类型:华为RH5885 IP: 10.148.128.100 内存: 64G 物理CPU个数:4 CPU核数:8 逻辑CPU个数:64 Int ...
随机推荐
- GatewayWorker
GatewayWorker介绍 一.工作原理 Register.Gateway.BusinessWorker进程启动 Gateway.BusinessWorker进程启动后向Register服务进程发 ...
- OpenGL教程和书籍
1.http://goanna.cs.rmit.edu.au/~gl/teaching/Interactive3D/
- Win10系统桌面右键新建没有内容怎么恢复
Win10系统桌面右键新建没有内容怎么恢复 添加txt文本文档 运行->regedit,打开注册表编辑器 展开HKEY_CLASSES_ROOT 找到.txt 选中.txt,修改右侧窗格的“默认 ...
- python 去除微软的BOM
傻逼微软会给文件前面加上efbbbf, 导致开发人员浪费很多时间在排错上,下面通过python代码来实现去除微软BOM的功能 用法很简单,指定可能含有BOM开头的文件,并且将微软的\r\n 换成lin ...
- php 关于时间函数
1. 设置时区 date_default_timezone_set() 和 putenv() 让时间安全地设置就,输入如下代码: date_default_timezone_set('UTC'); / ...
- Spring加载classpath与classpath*的过程剖析
使用spring-boot 1.5.7 在resource目录下创建i18n文件夹 使用spring的默认配置没有加载到文件 # INTERNATIONALIZATION (MessageSource ...
- kafka6 编写使用自定义分区的生产者
一 客户端 在上一篇博客创建的简单生产者的基础上,进行两个修改操作: 1.新建SimplePartitioner.java,修改返回分区为1. SimplePartitioner.java代码如下 p ...
- SQL 流水账余额查询
创建表 CREATE TABLE [dbo].[test]( ,) NOT NULL, [RQ] [date] NULL, [SR] [int] NULL, [ZC] [int] NULL ) ON ...
- 008-js中的正则表达式
查看地址:http://www.runoob.com/js/js-regexp.html 一.正则表达式概述 正则表达式(英语:Regular Expression,在代码中常简写为regex.reg ...
- 【剑指offer】部分思路整理
题目 LL今天心情特别好,因为他去买了一副扑克牌,发现里面居然有2个大王,2个小王(一副牌原本是54张^_^)...他随机从中抽出了5张牌,想测测自己的手气,看看能不能抽到顺子,如果抽到的话,他决定去 ...