`
天梯梦
  • 浏览: 13730934 次
  • 性别: Icon_minigender_2
  • 来自: 洛杉矶
社区版块
存档分类
最新评论

php 备份数据库(生成word,excel,json,xml,sql)

阅读更多

单表备份

 

代码:

 

<?php
class Db
{
	var $conn;

	function Db($host="localhost",$user="root",$pass="root",$db="test")
	{
	  if(!$this->conn=mysql_connect($host,$user,$pass))
	  die("can't connect to mysql sever");
	  mysql_select_db($db,$this->conn);
	  mysql_query("SET NAMES 'UTF-8'");
	}

	function execute($sql)
	{
	   return mysql_query($sql,$this->conn);
	}

	function findCount($sql)
	{
		$result=$this->execute($sql);
		return mysql_num_rows($result);
	}

	function findBySql($sql)
	{
		$array=array();
		$result=mysql_query($sql);
		$i=0;
		while($row=mysql_fetch_assoc($result))
		   {
		  $array[$i]=$row; 
	   $i++;
		   }
		return $array;
	}

	//$con的几种情况
	//空:返回全部记录
	//array:eg. array('id'=>'1') 返回id=1的记录
	//string :eg. 'id=1' 返回id=1的记录
	function toExtJson($table,$start="0",$limit="10",$cons="")
	{
	   $sql=$this->generateSql($table,$cons);
	   $totalNum=$this->findCount($sql);
	   $result=$this->findBySql($sql." LIMIT ".$start." ,".$limit);
	   $resultNum = count($result);//当前结果数
	  $str="";
	  $str.= "{";
	  $str.= "'totalCount':'$totalNum',";
	  $str.="'rows':";
	  $str.="[";
	  for($i=0;$i<$resultNum;$i++){
	   $str.="{"; 
	   $count=count($result[$i]);
	   $j=1;
	   foreach($result[$i] as $key=>$val)
	   {
	   if($j<$count)
	   {
	   $str.="'".$key."':'".$val."',";
	   }
	   elseif($j==$count)
	   {
	   $str.="'".$key."':'".$val."'";
	   }
	   $j++;
				}
	   
	   $str.="}";
	   if ($i != $resultNum-1) {
				 $str.= ",";
			 }
	  }
	  $str.="]";
	  $str.="}";
	  return $str;  
	}

	function generateSql($table,$cons)
	{
		$sql="";//sql条件
	   $sql="select * from ".$table;
	   if($cons!="")
	   {
	   if(is_array($cons))
	   {
		 $k=0;
		 foreach($cons as $key=>$val)
	  {
	  if($k==0)
	  {
	  $sql.="where '";
	  $sql.=$key;
	  $sql.="'='";
	  $sql.=$val."'";
	  }else
	  {
	  $sql.="and '";
	  $sql.=$key;
	  $sql.="'='";
	  $sql.=$val."'";
	  }
	  $k++;
	  }
	   }else
	   {
	   $sql.=" where ".$cons;
	   }
	   }
	   return $sql;
	}

	function toExtXml($table,$start="0",$limit="10",$cons="")
	{
	   $sql=$this->generateSql($table,$cons);
	   $totalNum=$this->findCount($sql);
	   $result=$this->findBySql($sql." LIMIT ".$start." ,".$limit);
	   $resultNum = count($result);//当前结果数
	   header("Content-Type: text/xml");
	   $xml="<?xml version=\"1.0\"  encoding=\"utf-8\" ?>\n";
	   $xml.="<xml>\n";
	   $xml.="\t<totalCount>".$totalNum."</totalCount>\n";
	   $xml.="\t<items>\n";
	   for($i=0;$i<$resultNum;$i++){
	   $xml.="\t\t<item>\n";
	   foreach($result[$i] as $key=>$val)
	   $xml.="\t\t\t<".$key.">".$val."</".$key.">\n";
	   $xml.="\t\t</item>\n";
	   }
		$xml.="\t</items>\n";
		$xml.="</xml>\n";
		return $xml;
	}

	//输出word表格
	function toWord($table,$mapping,$fileName)
	{
	   header('Content-type: application/doc'); 
		  header('Content-Disposition: attachment; filename="'.$fileName.'.doc"'); 
		  echo '<html xmlns:o="urn:schemas-microsoft-com:office:office" 
		   xmlns:w="urn:schemas-microsoft-com:office:word" 
		   xmlns="[url=http://www.w3.org/TR/REC-html40]http://www.w3.org/TR/REC-html40[/url]">
		<head>
		   <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
		<title>'.$fileName.'</title>
		</head>
		<body>'; 
		echo'<table border=1><tr>';
		if(is_array($mapping))
		{
		  foreach($mapping as $key=>$val)
	   echo'<td>'.$val.'</td>';
		}
		echo'</tr>';
		$results=$this->findBySql('select * from '.$table);
		foreach($results as $result)
		{
		  echo'<tr>';
		  foreach($result as $key=>$val)
	   echo'<td>'.$val.'</td>';
	   echo'</tr>';
		}
		echo'</table>';
		echo'</body>';
		echo'</html>';
	}

	function toExcel($table,$mapping,$fileName)
	{
	  header("Content-type:application/vnd.ms-excel");
		 header("Content-Disposition:filename=".$fileName.".xls");
	  echo'<html xmlns:o="urn:schemas-microsoft-com:office:office"
		   xmlns:x="urn:schemas-microsoft-com:office:excel"
		   xmlns="[url=http://www.w3.org/TR/REC-html40]http://www.w3.org/TR/REC-html40[/url]">
		   <head>
		   <meta http-equiv="expires" content="Mon, 06 Jan 1999 00:00:01 GMT">
		   <meta http-equiv=Content-Type content="text/html; charset=iso-8859-1">
		   <!--[if gte mso 9]><xml>
		   <x:ExcelWorkbook>
			   <x:ExcelWorksheets>
					   <x:ExcelWorksheet>
						   <x:Name></x:Name>
						   <x:WorksheetOptions>
							   <x:DisplayGridlines/>
						   </x:WorksheetOptions>
					   </x:ExcelWorksheet>
			   </x:ExcelWorksheets>
		   </x:ExcelWorkbook>
		   </xml><![endif]-->
		   </head>
		<body link=blue vlink=purple leftmargin=0 topmargin=0>'; 
		echo'<table width="100%" border="0" cellspacing="0" cellpadding="0">';
		   echo'<tr>';
		if(is_array($mapping))
		{
		  foreach($mapping as $key=>$val)
	   echo'<td>'.$val.'</td>';
		}
		echo'</tr>';
		$results=$this->findBySql('select * from '.$table);
		foreach($results as $result)
		{
		  echo'<tr>';
		  foreach($result as $key=>$val)
	   echo'<td>'.$val.'</td>';
	   echo'</tr>';
		}
		echo'</table>';
		echo'</body>';
		echo'</html>';
	}

	function Backup($table)
	{
	  if(is_array ($table))
	  {
	   $str="";
	   foreach($table as $tab)
	   $str.=$this->get_table_content($tab);
	   return $str;
	  }else{
	   return $this->get_table_content($table);
	  }
	}

	function Backuptofile($table,$file)
	{
	  header("Content-disposition: filename=$file.sql");//所保存的文件名
	  header("Content-type: application/octetstream");
	  header("Pragma: no-cache");
	  header("Expires: 0");
	  if(is_array ($table))
	  {
	   $str="";
	   foreach($table as $tab)
	   $str.=$this->get_table_content($tab);
	   echo $str;
	  }else{
	   echo $this->get_table_content($table);
	  }
	}

	function Restore($table,$file="",$content="")
	{
	  //排除file,content都为空或者都不为空的情况
	  if(($file==""&&$content=="")||($file!=""&&$content!=""))
	  echo"参数错误";
	  $this->truncate($table);
	  if($file!="")
	  {
	   if($this->RestoreFromFile($file))
	   return true;
	   else
	   return false;
	  }
	  if($content!="")
	  {
	   if($this->RestoreFromContent($content))
	   return true;
	   else
	   return false;
	  }
	}

	//清空表,以便恢复数据
	function truncate($table)
	{
	  if(is_array ($table))
	  {
	   $str="";
	   foreach($table as $tab)
	   $this->execute("TRUNCATE TABLE $tab");
	  }else{
	   $this->execute("TRUNCATE TABLE $table");
	  }
	}

	function get_table_content($table)
	{
	  $results=$this->findBySql("select * from $table");
	  $temp = "";
	  $crlf="<br>";
	  foreach($results as $result)
	  {
	   
	   /*(";
	  foreach($result as $key=>$val)
	  {
	   $schema_insert .= " `".$key."`,";
	  }
	  $schema_insert = ereg_replace(",$", "", $schema_insert);
	  $schema_insert .= ") 
	  */
	  $schema_insert = "INSERT INTO  $table VALUES (";
	  foreach($result as $key=>$val)
	  {
	   if($val != "")
	   $schema_insert .= " '".addslashes($val)."',";
	   else
	   $schema_insert .= "NULL,";
	  }
	  $schema_insert = ereg_replace(",$", "", $schema_insert);
	  $schema_insert .= ");$crlf";
	  $temp = $temp.$schema_insert ;
	  }
	  return $temp;
	}

	function RestoreFromFile($file){
	  if (false !== ($fp = fopen($file, 'r'))) {
	   $sql_queries = trim(fread($fp, filesize($file)));
	   $this->splitMySqlFile($pieces, $sql_queries);
	   foreach ($pieces as $query) {
		if(!$this->execute(trim($query)))
		return false;
	   }
	   return true;
	  }
	  return false;
	}

	function RestoreFromContent($content)
	{
	  $content = trim($content);
	  $this->splitMySqlFile($pieces, $content);
	  foreach ($pieces as $query) {
	   if(!$this->execute(trim($query)))
	   return false;
	  }
	  return true;
	}

	function splitMySqlFile(&$ret, $sql)
	{
	  $sql= trim($sql);
	  $sql=split(';',$sql);
	  $arr=array();
	  foreach($sql as $sq)
	  {
		if($sq!="");
		$arr[]=$sq;
	  }
	  $ret=$arr;
	  return true;
	}
}


$db=new db();

// 生成 word 
//$map=array('No','Name','Email','Age');
//echo  $db->toWord('test',$map,'档案');

// 生成 Excel 
//$map=array('No','Name','Email','Age');
//echo  $db->toExcel('test',$map,'档案');

// 生成 Xml 
//echo  $db->toExtXml('test',0,20);

// 生成 Json 
//echo  $db->toExtJson('test',0,20);

//备份	
//echo $db->Backuptofile('test','backup');


?>
 

 

整表备份

 

<?
backup_tables('localhost','root','root','test');


/* backup the db OR just a table */
function backup_tables($host,$user,$pass,$name,$tables = '*')
{
  
  $link = mysql_connect($host,$user,$pass);
  mysql_select_db($name,$link);
  
  //get all of the tables
  if($tables == '*')
  {
    $tables = array();
    $result = mysql_query('SHOW TABLES');
    while($row = mysql_fetch_row($result)) $tables[] = $row[0];
  }
  else $tables = is_array($tables) ? $tables : explode(',',$tables);
  
  //cycle through
  foreach($tables as $table)
  {
    $result = mysql_query('SELECT * FROM '.$table);
    $num_fields = mysql_num_fields($result);
    
    $return.= 'DROP TABLE '.$table.';';
    $row2 = mysql_fetch_row(mysql_query('SHOW CREATE TABLE '.$table));
    $return.= "\n\n".$row2[1].";\n\n";
    
    for ($i = 0; $i < $num_fields; $i++) 
    {
      while($row = mysql_fetch_row($result))
      {
        $return.= 'INSERT INTO '.$table.' VALUES(';
        for($j=0; $j<$num_fields; $j++) 
        {
          $row[$j] = addslashes($row[$j]);
          $row[$j] = ereg_replace("\n","\\n",$row[$j]);
          if (isset($row[$j])) { $return.= '"'.$row[$j].'"' ; } else { $return.= '""'; }
          if ($j<($num_fields-1)) { $return.= ','; }
        }
        $return.= ");\n";
      }
    }
    $return.="\n\n\n";
  }
  
  //save file
  $handle = fopen('db-backup-'.time().'-'.(md5(implode(',',$tables))).'.sql','w+');
  fwrite($handle,$return);
  fclose($handle);
}

?>

 

 

或者:

 

 

$link = mysql_connect(DB_HOST,DB_USER,DB_PASS);

$tables = mysql_list_tables(DB_NAME);
$cachetables = array(); $tableselected = array();

while ($table = mysql_fetch_row($tables))
{
   $cachetables[$table[0]] = $table[0];
   $tableselected[$table[0]] = 1;
}

$table = $cachetables;
$filename =  DB_NAME . "_" . date("Y_m_d_H_i_s") . ".sql";
$path = "sql/" . $filename;

$filehandle = fopen($path, "w");

$result = mysql_query("SHOW tables");
while ($currow = mysql_fetch_array($result))
{
   if (isset($table[$currow[0]]))
   {
     sqldumptable($currow[0], $filehandle);
     fwrite($filehandle, "\n\n\n");
   }
}

fclose($filehandle);


$update_data = array('filename' => $filename, 'postdate' => mktime());
$db->insert('backup_db', $update_data);

// data dump functions
function sqldumptable($table, $fp = 0)
{
    $tabledump = "DROP TABLE IF EXISTS " . $table . ";\n";
    $result = mysql_fetch_array(mysql_query("SHOW CREATE TABLE " . $table));
    //echo "SHOW CREATE TABLE $table";
    $tabledump .= $result[1] . ";\r\n";

    if ($fp) {
        fwrite($fp, $tabledump);
    } else {
        echo $tabledump;
    }
    // get data
    $rows = mysql_query("SELECT * FROM " . $table);
    // $numfields=$DB->num_fields($rows);
    $numfields = mysql_num_fields($rows);
    while ($row = mysql_fetch_array($rows)) {
        $tabledump = "INSERT INTO " . $table . " VALUES(";

        $fieldcounter = -1;
        $firstfield = 1;
        // get each field's data
        while (++$fieldcounter < $numfields) {
            if (!$firstfield) {
                $tabledump .= ", ";
            } else {
                $firstfield = 0;
            }

            if (!isset($row[$fieldcounter])) {
                $tabledump .= "NULL";
            } else {
                $tabledump .= "'" . mysql_escape_string($row[$fieldcounter]) . "'";
            }
        }

        $tabledump .= ");\n";

        if ($fp) {
            fwrite($fp, $tabledump);
        } else {
            echo $tabledump;
        }
    }
    mysql_free_result($rows);
}
 

导入数据库

 

<?php
/************
*
PHP导入.sql文件
运行版本:php5,php4 使用的时候请选择
作者:panxp
邮件:coolpan123@gmail.com
*
*************/

	$file_dir = dirname(__FILE__);
	$file_name = "2010-05-09-bak.sql";

	$conn = mysql_connect(DB_HOST,DB_USER,DB_PASS);
	mysql_select_db(DB_NAME, $conn);

	/** PHP5 版本 **/
	$get_sql_data = file_get_contents($file_name, $file_dir);

	/**  
	* PHP4 版本
	if(file_exists($file_dir."/".$file_name)) 
	{
		$get_sql_data = fopen($file_dir."/".$file_name,"r");   
		if(!$get_sql_data) 
		{
			echo "不能打开文件";
		} 
		else 
		{
			$get_sql_data = fread($get_sql_data, filesize ($file_dir."/".$file_name));
		}
	}
	***/

	$explode = explode(";", $get_sql_data);
	$cnt = count($explode);
	for ($i=0; $i<$cnt; $i++) 
	{
		$sql = $explode[$i];
		$result = mysql_query($sql);
		mysql_query("set names 'utf8'");

		if ($result) {
			echo "成功:".$i."个查询<br>";
		} else {
			echo "导入失败:".mysql_error();
		}
	}
?>
 

 

 

 

 

 

 

 

分享到:
评论

相关推荐

    php加载和生成json和生成xml文件,并带有ajax分页效果,带图带数据库

    本文将深入探讨如何使用PHP加载和生成JSON以及XML文件,并结合AJAX实现分页效果,同时结合数据库和图片资源。 首先,让我们了解JSON(JavaScript Object Notation)和XML(Extensible Markup Language)。两者都是...

    SQL自动生成JSON数据.docx

    SQL自动生成JSON数据 SQL语言是 stru ctured Query Language的缩写,用于管理关系数据库管理系统(RDBMS)。SQL语言可以对数据库进行创建、修改、删除、查询等操作。SQL语言是一种标准化的语言,广泛应用于各种...

    根据数据库sql生成java代码代码生成器

    1、本地执行代码生成工具,可生成controller、service、repository、entity、mapper、mapper.xml的增删改查代码。生成的文件复制到项目路径中,修修改改即可实现大部分CRUD功能。 2、工具不需要导入到项目中,本地...

    php 备份数据库代码(生成word,excel,json,xml,sql)

    在本篇文章中,我们将深入探讨如何使用PHP代码备份数据库,并且还将探讨如何将备份内容输出为常见的数据格式如Word、Excel、JSON、XML和SQL。 在进行数据库备份之前,我们需要了解数据库备份的常见方法和目的。...

    圣经数据库:圣经数据库为XML,JSON,SQL和SQLITE3多种语言的数据库格式。 开发人员可以免费下载以进行开发工作。 自由接受,自由给予

    圣经数据库:圣经数据库为XML,JSON,SQL和SQLITE3多种语言的数据库格式。 开发人员可以免费下载以进行开发工作。 自由接受,自由给予

    JsonSQL:用SQL语句解析JSON文件

    然而,对于习惯使用SQL查询关系型数据库的人来说,处理JSON数据可能会觉得不太直观。JsonSQL项目应运而生,它允许用户通过SQL语句来操作和解析JSON文件,提供了更为熟悉的查询方式。 JsonSQL的基本概念是将JSON文档...

    excel转json插件,并生成C#类

    本篇将详细介绍如何使用“excel转json插件”并生成相应的C#类。 首先,我们要理解Excel转JSON的过程。这个过程主要是将Excel中的表格数据转换成符合JSON规范的字符串。在Excel中,每一行可以视为一个对象,列则对应...

    php生成json和xml

    在PHP开发中,生成JSON和XML是常见的任务,特别是在构建API接口时,因为这两种数据格式是数据交换的常用标准。让我们深入探讨这两种格式以及如何在PHP中使用它们。 首先,JSON(JavaScript Object Notation)是一种...

    unity多语言操作和excel转xml,json,csv

    本教程将探讨如何在Unity中处理多语言操作,并利用Excel工具转换数据为XML、JSON和CSV格式,以便于管理和导入到项目中。 首先,让我们了解Unity中的多语言支持。Unity允许开发者创建一个资源包,包含不同语言版本的...

    json转换为SQL server建表脚本

    在开发过程中,有时我们需要将JSON数据转化为SQL Server的建表脚本,以便在数据库中创建相应的表结构来存储这些数据。 标题"json转换为SQL server建表脚本"涉及到的主要知识点包括: 1. JSON解析:首先,你需要...

    php接收json数据,保存数据库

    JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,因其易于阅读和编写,同时也易于机器解析和生成,因此被广泛用于Web服务间的通信。本篇文章将详细介绍如何在PHP中接收JSON数据并将其存储到数据库。...

    Sql Server Json解析

    sql server 2014 JSON解析到表函数 CREATE FUNCTION [dbo].[parseJSON]( @JSON NVARCHAR(MAX)) RETURNS @hierarchy TABLE ( element_id INT IDENTITY(1, 1) NOT NULL, ...

    使用java代码生成json文件和word文档!

    在Java编程环境中,生成JSON文件和Word文档是常见的任务,特别是在数据处理、报告生成或API交互等场景。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,而Word文档则广泛用于创建结构化的文本报告...

    VB解析Json转换为Xml

    4. 最后,可以输出或保存生成的Xml: ```vb Console.WriteLine(xDoc.ToString()) ' 在控制台打印Xml xDoc.Save("output.xml") ' 保存到文件 ``` 在实际项目中,Json数据可能更为复杂,包含嵌套的对象和数组。...

    idea Java 解析json文件并导入mysql数据库

    在Java开发环境中,IntelliJ IDEA(简称Idea)是一个非常强大的集成开发工具,而处理JSON数据和与MySQL数据库交互是常见的任务。本教程将详细讲解如何在Idea中使用Java解析JSON文件,并将数据有效地导入到MySQL...

    java服务端生成json(json服务端)

    Java服务端生成JSON是Web应用开发中的常见任务,主要用于数据交换。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。在Java中,我们可以使用多种库来...

    jqgrid 导出成为 JSON, XML, CSV, TSV, TXT, SQL, Word, Excel, PNG,PDF格式

    在本场景中,我们将探讨如何使用 jqGrid 导出数据到 JSON, XML, CSV, TSV, TXT, SQL, Word, Excel, PNG, PDF 等格式。 1. **JSON**: JavaScript Object Notation,是一种轻量级的数据交换格式,易于人阅读和编写,...

    spring mvc生成xml或json

    下面我们将深入探讨如何在Spring MVC中生成XML和JSON响应。 首先,让我们了解一下XML(Extensible Markup Language)和JSON(JavaScript Object Notation)。XML是一种结构化数据格式,常用于存储和传输数据,具有...

Global site tag (gtag.js) - Google Analytics