- 浏览: 203201 次
- 性别:
- 来自: 湖南
文章分类
最新评论
之前一直是手工导入导出数据库,在服务器端或者客户端备份还原数据库经常了出错,很不方便,现我写了一个关于php 代码实现 备份还原mysql数据库
<?php class DbOperate { public $db; private $debug = false; public $tbprefix = ''; public function __construct($mysql) { global $db; $this ->db = $mysql; $this -> tbprefix = $tbprefix; } /**查询**/ function getAllTabName() { $sql = "show tables"; $arrs = $this ->db -> query($sql); $tab_arr = array(); while($row =$this ->db -> fetch_array($arrs)){ $tab_arr[] = $row['Tables_in_takoo_db']; } return $tab_arr; } /**备份**/ function bakupData($tb_arr,$start = 0,$sizelimit) { global $sizelimit,$startfrom,$tbid,$rows,$stop; $t_count = count($tb_arr); for($i=0;$i<$t_count;$i++){ $res = $this -> db -> query("SHOW TABLE STATUS LIKE '$tb_arr[$i]'"); $arr = $this -> db -> fetch_array($res); $rows = (int)$arr['Rows']; $limitadd = "LIMIT $start,100000"; $query = $this -> db -> query("SELECT * FROM $tb_arr[$i]");//$limitadd $num_F = mysql_num_fields($query); while (FALSE!=$datadb = mysql_fetch_row($query)) { $start++; $table=$tb_arr[$i]; $bakupdata .= "INSERT INTO $table VALUES("."'".addslashes($datadb[0])."'"; $tempdb=''; for ($j=1;$j<$num_F;$j++) { $tempdb .= ",'".addslashes($datadb[$j])."'"; } $bakupdata .=$tempdb. ");\n"; if ($sizelimit && strlen($bakupdata)>$sizelimit*1000) { break; } } mysql_free_result($query); if($start>=$rows) { $start=0; $rows=0; } $bakupdata .="\n"; if($sizelimit && strlen($bakupdata)>$sizelimit*1000){ $start==0 && $i++; $stop=1; break; } $start=0; } if($stop==1) { $i++; $tbid = $i; $startfrom = $start; $start = 0; } return $bakupdata; } /**备份表**/ public function bakupTable($tb_arr) { $this -> db->query("SET SQL_QUOTE_SHOW_CREATE = 0"); foreach ($tb_arr as $table) { $creattable.= "DROP TABLE IF EXISTS $table;\n"; $res = $this -> db -> query("SHOW CREATE TABLE $table"); $ctable = $this -> db -> fetch_array($res); $creattable .= $ctable['Create Table'].";\n\n"; } $bak = "#\n# Takoo: bakfile\n# Version: 1.1.2\n# Time: ".date('Y-m-d H:i:s')."\n# Type: ".count($tb_arr)." \n# 官方网站:: http://www.takoo.com.cn\n# --------------------------------------------------------\n\n\n"; return $bak.$creattable; } /**还原**/ public function bakInData($file) { global $dbcharset; $sql = file($file); $query=''; $num=0; foreach ($sql as $key => $value) { $value = trim($value); if (!$value || $value[0]=='#') continue; if (eregi("\;$",$value)) { $query .= $value; if (eregi("^CREATE",$query)) { $extra = substr(strrchr($query,')'),1); $tabtype = substr(strchr($extra,'='),1); $tabtype = substr($tabtype, 0, strpos($tabtype,strpos($tabtype,' ') ? ' ' : ';')); $query = str_replace($extra,'',$query); if (version_compare(mysql_get_server_info(), '4.1.0', '>=')) { $extra = $dbcharset ? "ENGINE=$tabtype DEFAULT CHARSET=".$dbcharset.";" : "ENGINE=$tabtype;"; } else { $extra = "TYPE=$tabtype;"; } $query .= $extra; } elseif(eregi("^INSERT",$query)) { $query = 'REPLACE '.substr($query,6); } $this -> db -> query($query); $query=''; } else{ $query.=$value; } } } public function getcreatFile($tb_arr,$sizelimit){ $path = '../data/db_backup'; if(!file_exists($path)){ $this->createDir($path); } $this->create_file($this->bakupTable($tb_arr).$this->bakupData($tb_arr,0,$sizelimit),'../data/db_backup/takoo_'.md5(date('Ymd_His')).'.sql'); } /**读取文件**/ public function getBackupFileInfo() { $filedb = array(); $handle = opendir('../data/db_backup'); while ($file = readdir($handle)) { if (eregi("^takoo_",$file) && eregi("\.sql$",$file)) { $strlen = eregi("^takoo_",$file) ? 16 + strlen("takoo_") : 19; $fp = fopen("../data/db_backup/$file",'rb'); $bakinfo = fread($fp,filesize("../data/db_backup/$file")); fclose($fp); $detail=explode("\n",$bakinfo); $bk['name'] = $file; $bk['num'] = substr($detail[4],1); $bk['version'] = substr($detail[2],1); $bk['time'] = substr($detail[3],1); $bk['pre'] = substr($file,0,$strlen); $filedb[] = $bk; } } return $this -> setFileInfo($filedb); } /**设计文件**/ private function setFileInfo($arr) { $tmp1 = $tmp2 = array(); foreach ($arr as $k => $v) { $tmp1[] = $v['pre']; } $dbf = array_unique($tmp1); sort($dbf); for($i=0,$max=intval(count($dbf));$i<$max;$i++) { $j = 0; foreach ($arr as $a => $b) { if ($j == 0) { $tmp2[$i]['name'] = $dbf[$i].'.sql';//$b['name'] $tmp2[$i]['num'] = $b['num']; $tmp2[$i]['version'] = $b['version']; $tmp2[$i]['time'] = $b['time']; $tmp2[$i]['pre'] = $b['name']; } if ($b['pre'] == $dbf[$i]) { $j += 1; } } } return $tmp2; } /**删除文件**/ public function delBackup($arr) { if (!is_array($arr)) { $file = '../data/db_backup/'.$d['name']; self::delSqlFile($arr); return true; } $farr = $this -> getBackupFileInfo(); foreach ($arr as $k => $v) { self::delSqlFile($v); } } private function delSqlFile($file) { if (!is_file("../data/db_backup/".$file)) { return false; } @chmod("../data/db_backup/".$file, 0777); return @unlink("../data/db_backup/".$file); } public function __destruct() { $this -> db = null; } private function createDir($dir) { $flag = true; $dir = str_replace(array('//','\\','\\\\'),'/',$dir); if (!is_dir($dir)) { $temp = explode('/',$dir); $cur_dir = ''; for($i=0;$i<count($temp);$i++) { $cur_dir .= $temp[$i].'/'; if (!@is_dir($cur_dir)) { if(!@mkdir($cur_dir,0777)) $flag = false; } $flag !== false and @chmod($cur_dir,0777); } } return $flag; } public function create_file($data,$file,$cover="wb",$return = true){//ab追加 WB 覆盖 $file = str_replace("\\",'/',$file); $p = dirname($file); $p = substr($p,-1,1)!='/'?$p.'/':$p; @$this->mkdirs($p); $fp=fopen($file, $cover); fwrite($fp,$data);//="\xEF\xBB\xBF".$text; @flock($fp,2); @fclose($fp); @chmod($file, 0777); if(!file_exists($file))return FALSE; return $return?(filesize($file)?$file:0):FALSE; } private function mkdirs($path, $mode = 0777){ $path = str_replace("\\",'/',$path); $dirs = explode('/',($path=substr($path,-1,1)!='/'?$path.'/':$path)); $pos = strrpos($path, "."); $subamount = $pos === false?0:1; for ($c=0;$c < count($dirs) - $subamount; $c++) { $thispath=""; for ($cc=0; $cc <= $c; $cc++) { $thispath.=$dirs[$cc].'/'; } if (!file_exists($thispath))@mkdir($thispath,$mode); } } } ?>
发表评论
-
php 报表开发
2011-10-29 02:21 4516 什么是报表 报表( 报: 报告 表: 表格 图表) ... -
php使用excel_class.php操作Excel文件
2011-05-11 15:53 2672<?php //header("Cont ... -
信息采集
2011-03-18 13:47 1041php支持多种远程文件复制,拷贝方法,常用有fsockop ... -
正则表达式
2011-03-12 09:37 10091、正则i,s,m,g 这些是模 ... -
PHP 和 AJAX
2011-01-07 09:22 790AJAX 简介 AJAX = Asynchronous ... -
PHP XML
2011-01-06 15:59 968PHP XML PHP XML Expat 解析器 ... -
PHP 数据库
2011-01-06 15:15 921PHP MySQL 简介 MySQL 是最流行的开源数据库服务 ... -
PHP 高级
2011-01-06 13:26 1295PHP Date() PHP 的 date() 函数用于格式化 ... -
PHP 基础
2011-01-06 11:36 957PHP 是一种创建动态交互 ... -
电子邮件开发
2010-12-24 15:19 977<?php //发送邮件的类 class Smt ... -
电子商务网站支付接口应用
2010-12-03 10:32 1289支付宝纯担保 支付宝(接口网站:www.alipay.com ... -
PHP_方法_PHP添加水印方法
2010-10-06 14:38 2606简介摘要:功能:PHP图 ... -
PHP+jQuery上传图片并对已上载的图片进行裁切
2010-09-09 08:37 3052PHP+jQuery上传图片并对已上载的图片进行裁 ... -
Smarty框架安装使用实例
2010-09-04 08:11 1847ThinkPHP是一个性 ... -
PHP通用分页程序
2010-01-09 19:57 1750我在一些PHP论坛上经常看到不少PHP初学者对于PHP分页很头 ... -
php配置安装
2010-01-03 14:04 1421我写过的教程不多,而 ...
相关推荐
标题中的"PHP导入和导出CSV EXCEL实例代码"指的是使用PHP编写程序,实现对CSV(逗号分隔值)和Excel文件的数据处理。CSV格式是一种简单且通用的数据交换格式,而Excel文件(通常是.xlsx或.xls格式)通常用于更复杂的...
MySQL数据库的管理和维护是IT领域中常见的任务,其中mysqldump和source命令是进行数据库导入导出的关键工具。这两个命令在Linux和Windows环境下都有应用,但使用方式有所不同。 mysqldump是MySQL提供的一个命令行...
本项目包含一个带样式的小实例,页面可以直接导入数据,导入的数据存入mysql数据库,也可以导出excel,导出excel文件位于downloads目录下, 需要将较长的样本数据从 Excel 文件导入到 MYSQL 数据库,此项目包含一个 ...
### MySQL在CMD状态下的导入与导出操作详解 ...以上步骤详细介绍了如何在CMD环境下进行MySQL的导入导出操作,并解决了导入文件大小限制的问题。这些操作对于数据库管理来说是非常实用且重要的技能。
本文将详细介绍两种常见的MySQL数据库文件导入导出的方法:使用图形化辅助工具和使用MySQL自带的命令行方式。 #### 二、使用图形化辅助工具进行MySQL导入导出 **MySQL GUITools v5.0** 是一套强大的可视化工具集,...
本程序包就是针对这一需求,使用PHP语言实现了从Excel文件中读取数据并将其导入到MySQL数据库的功能。这个过程涉及到了PHP的文件操作、数据处理以及数据库交互等多个技术点。 首先,我们要了解PHP中的`PHPExcel`库...
总结,使用PHP进行MySQL数据导入导出涉及到的知识点包括:PHP执行shell命令、PDO和MySQLi扩展的使用、`mysqldump`和`mysqlimport`工具、`SELECT INTO OUTFILE`和`LOAD DATA INFILE` SQL语句、数据分批处理、事务管理...
这篇教程将详细介绍如何使用PHP实现从MySQL数据库导出数据到Excel文件。 首先,我们需要理解基本的流程。这个过程通常包括以下几个步骤: 1. **连接MySQL数据库**:使用PHP的`mysqli_connect`或`PDO`函数建立与...
MySQL 数据导入导出是数据库管理中的重要操作,用于数据备份、迁移或在不同系统间交换数据。本篇文章主要探讨如何使用MySQL命令行和特定软件来导入导出不同类型的文件,如txt、sql和csv。 首先,数据导出可以通过两...
本篇文章将深入探讨如何使用PHP实现Excel的导入与导出,以及与MySQL数据库的交互。 首先,我们要知道PHP处理Excel文件主要依赖于第三方库,如PHPExcel、phpspreadsheet等。这些库提供了丰富的API,可以方便地读取、...
综上所述,无论是通过图形化工具还是命令行,MySQL都提供了灵活且高效的方式来处理数据库的导入导出。理解并掌握这些方法对于数据库管理和维护至关重要,特别是对于需要定期备份、迁移或恢复数据的场景。了解和熟练...
MySql 数据库导入乱码解决方案 在使用 PHPmyadmin 导出 MySql 数据库时,经常会遇到中文乱码的...通过遵循这些步骤,我们可以轻松地解决 MySql 数据库导入中文乱码的问题,并确保我们的数据库数据正确地导出和导入。
MySQL 数据导入导出是数据库管理中的重要操作,用于数据迁移、备份、恢复或者在不同环境间同步数据。本文主要介绍两种常见的MySQL数据导入导出方法:`SELECT INTO OUTFILE`语句和`mysqldump`实用程序。 1. **使用 `...
在进行MySQL数据库的导入导出之前,确保已经正确配置了MySQL的命令行环境。这通常涉及设置系统的环境变量,以便可以在任何位置通过命令行访问MySQL的可执行文件。 ##### 设置步骤: 1. **打开“我的电脑”属性**:...
CSV(Comma Separated Values)文件是一种常见的数据存储格式,广泛用于数据交换,尤其是在数据库导入导出场景中。本主题将深入探讨如何将CSV文件导入MySQL数据库,这通常涉及到几个关键步骤,包括数据预处理、连接...
php mysql数据库管理文件(单个文件 代码小 功能强大) phpmysql 管理数据库 非常适合php网站导入导出数据库 mysql数据库优化 等等 是一款强大高效的管理mysql数据库功能的文件
在进行MySQL数据库的导入与导出操作之前,首先需要确保能够顺利地通过命令行模式访问MySQL。以下是一些必要的配置步骤及基本命令介绍。 **1. 设置MySQL命令行模式** - **环境变量配置**:为了方便使用MySQL命令行...
本文适用范围:全面阐述MySQL数据库的各种操作,分虚拟主机和服务器两种情况。 虚拟主机 1、通过PHPMyAdmin的导入导出功能,这个软件一般只支持几兆数据的导出,太大的数据可能会超时。 2、通过程序自带的数据库备份...
【标题】:“从phpwind论坛分离出来的mysql数据库导入导出程序源码”是针对PHPWind论坛系统的数据库管理工具,主要用于数据库的备份(导出)和恢复(导入)操作。PHPWind是一款广泛使用的开源社区论坛软件,它基于...
以下是对`PHPExcel`类实现Excel导入MySQL数据库功能的详细说明。 1. **安装和下载**: 首先,你需要从`phpexcel.codeplex.com`下载`PHPExcel`库。这个库包含了处理Excel文件所需的所有类。下载后,将其解压缩并引入...