zoukankan      html  css  js  c++  java
  • PHP备份/还原MySQL数据库的代码

     
    之前是采用PHP读取数据库结构和内容,然后写文件,这样可能会导致导出的文件不一定能百分百导入到MySQL中去,想想之后采用MySQL自带的导入导出命令最保险
    以下是代码:

    一、备份数据库并下载到本地【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();
    }
    ?>
     
     

  • 相关阅读:
    jquery实现选项卡(两句即可实现)
    常用特效积累
    jquery学习笔记
    idong常用js总结
    织梦添加幻灯片的方法
    LeetCode "Copy List with Random Pointer"
    LeetCode "Remove Nth Node From End of List"
    LeetCode "Sqrt(x)"
    LeetCode "Construct Binary Tree from Inorder and Postorder Traversal"
    LeetCode "Construct Binary Tree from Preorder and Inorder Traversal"
  • 原文地址:https://www.cnblogs.com/sunscheung/p/4839395.html
Copyright © 2011-2022 走看看