(1)定义一个db_dump函数如下:

  1. <?PHP
  2. function db_dump($host,$user,$pwd,$db) {
  3. $mysqlconlink = mysql_connect($host,$user,$pwd , true);
  4. if (!$mysqlconlink)
  5. echo sprintf('No MySQL connection: %s',mysql_error())."<br/>";
  6. mysql_set_charset( 'utf8', $mysqlconlink );
  7. $mysqldblink = mysql_select_db($db,$mysqlconlink);
  8. if (!$mysqldblink)
  9. echo sprintf('No MySQL connection to database: %s',mysql_error())."<br/>";
  10. $tabelstobackup=array();
  11. $result=mysql_query("SHOW TABLES FROM `$db`");
  12. if (!$result)
  13. echo sprintf('Database error %1$s for query %2$s', mysql_error(), "SHOW TABLE STATUS FROM `$db`;")."<br/>";
  14. while ($data = mysql_fetch_row($result)) {
  15. $tabelstobackup[]=$data[0];
  16. }
  17. if (count($tabelstobackup)>0) {
  18. $result=mysql_query("SHOW TABLE STATUS FROM `$db`");
  19. if (!$result)
  20. echo sprintf('Database error %1$s for query %2$s', mysql_error(), "SHOW TABLE STATUS FROM `$db`;")."<br/>";
  21. while ($data = mysql_fetch_assoc($result)) {
  22. $status[$data['Name']]=$data;
  23. }
  24. if ($file = fopen("$db.sql", 'wb')) {
  25. fwrite($file, "-- ---------------------------------------------------------\n");
  26. fwrite($file, "-- Database Name: $db\n");
  27. fwrite($file, "-- ---------------------------------------------------------\n\n");
  28. fwrite($file, "/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;\n");
  29. fwrite($file, "/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;\n");
  30. fwrite($file, "/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;\n");
  31. fwrite($file, "/*!40101 SET NAMES '".mysql_client_encoding()."' */;\n");
  32. fwrite($file, "/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;\n");
  33. fwrite($file, "/*!40103 SET TIME_ZONE='".mysql_result(mysql_query("SELECT @@time_zone"),0)."' */;\n");
  34. fwrite($file, "/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;\n");
  35. fwrite($file, "/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;\n");
  36. fwrite($file, "/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;\n");
  37. fwrite($file, "/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;\n\n");
  38. foreach($tabelstobackup as $table) {
  39. echo sprintf('Dump database table "%s"',$table)."<br/>";
  40. need_free_memory(($status[$table]['Data_length']+$status[$table]['Index_length'])*3);
  41. _db_dump_table($table,$status[$table],$file);
  42. }
  43. fwrite($file, "\n");
  44. fwrite($file, "/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;\n");
  45. fwrite($file, "/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;\n");
  46. fwrite($file, "/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;\n");
  47. fwrite($file, "/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;\n");
  48. fwrite($file, "/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;\n");
  49. fwrite($file, "/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;\n");
  50. fwrite($file, "/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;\n");
  51. fwrite($file, "/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;\n");
  52. fclose($file);
  53. echo 'Database dump done!'."<br/>";
  54. } else {
  55. echo 'Can not create database dump!'."<br/>";
  56. }
  57. } else {
  58. echo 'No tables to dump'."<br/>";
  59. }
  60. }
  61. function _db_dump_table($table,$status,$file) {
  62. fwrite($file, "\n");
  63. fwrite($file, "--\n");
  64. fwrite($file, "-- Table structure for table $table\n");
  65. fwrite($file, "--\n\n");
  66. fwrite($file, "DROP TABLE IF EXISTS `" . $table . "`;\n");
  67. fwrite($file, "/*!40101 SET @saved_cs_client = @@character_set_client */;\n");
  68. fwrite($file, "/*!40101 SET character_set_client = '".mysql_client_encoding()."' */;\n");
  69. $result=mysql_query("SHOW CREATE TABLE `".$table."`");
  70. if (!$result) {
  71. echo sprintf('Database error %1$s for query %2$s', mysql_error(), "SHOW CREATE TABLE `".$table."`")."<br/>";
  72. return false;
  73. }
  74. $tablestruc=mysql_fetch_assoc($result);
  75. fwrite($file, $tablestruc['Create Table'].";\n");
  76. fwrite($file, "/*!40101 SET character_set_client = @saved_cs_client */;\n");
  77. $result=mysql_query("SELECT * FROM `".$table."`");
  78. if (!$result) {
  79. echo sprintf('Database error %1$s for query %2$s', mysql_error(), "SELECT * FROM `".$table."`")."<br/>";
  80. return false;
  81. }
  82. fwrite($file, "--\n");
  83. fwrite($file, "-- Dumping data for table $table\n");
  84. fwrite($file, "--\n\n");
  85. if ($status['Engine']=='MyISAM')
  86. fwrite($file, "/*!40000 ALTER TABLE `".$table."` DISABLE KEYS */;\n");
  87. while ($data = mysql_fetch_assoc($result)) {
  88. $keys = array();
  89. $values = array();
  90. foreach($data as $key => $value) {
  91. if($value === NULL)
  92. $value = "NULL";
  93. elseif($value === "" or $value === false)
  94. $value = "''";
  95. elseif(!is_numeric($value))
  96. $value = "'".mysql_real_escape_string($value)."'";
  97. $values[] = $value;
  98. }
  99. fwrite($file, "INSERT INTO `".$table."` VALUES ( ".implode(", ",$values)." );\n");
  100. }
  101. if ($status['Engine']=='MyISAM')
  102. fwrite($file, "/*!40000 ALTER TABLE ".$table." ENABLE KEYS */;\n");
  103. }
  104. function need_free_memory($memneed) {
  105. if (!function_exists('memory_get_usage'))
  106. return;
  107. $needmemory=@memory_get_usage(true)+inbytes($memneed);
  108. if ($needmemory>inbytes(ini_get('memory_limit'))) {
  109. $newmemory=round($needmemory/1024/1024)+1 .'M';
  110. if ($needmemory>=1073741824)
  111. $newmemory=round($needmemory/1024/1024/1024) .'G';
  112. if ($oldmem=@ini_set('memory_limit', $newmemory))
  113. echo sprintf(__('Memory increased from %1$s to %2$s','backwpup'),$oldmem,@ini_get('memory_limit'))."<br/>";
  114. else
  115. echo sprintf(__('Can not increase memory limit is %1$s','backwpup'),@ini_get('memory_limit'))."<br/>";
  116. }
  117. }
  118. function inbytes($value) {
  119. $multi=strtoupper(substr(trim($value),-1));
  120. $bytes=abs(intval(trim($value)));
  121. if ($multi=='G')
  122. $bytes=$bytes*1024*1024*1024;
  123. if ($multi=='M')
  124. $bytes=$bytes*1024*1024;
  125. if ($multi=='K')
  126. $bytes=$bytes*1024;
  127. return $bytes;
  128. }
  129. ?>

(2)使用方法:

  1. db_dump('数据库服务器', '数据库用户名', '数据库密码', '数据库名');

PHP导出数据库方法的更多相关文章

  1. linux导入导出数据库方法 windows导入导出数据库方法

    1.使用管理员账号(sys)登录查询字符集信息 第一步:查询LinuxOracle数据库的字符集 select userenv('language') from dual; 查询结果集可能为:AMER ...

  2. plsql developer导入导出数据库方法

    导出步骤: 1 tools ->export user object 选择选项,导出.sql文件 2 tools ->export tables-> Oracle Export 选择 ...

  3. PL/SQLDeveloper导入导出Oracle数据库方法

    前一篇博客介绍了Navicat工具备份Oracle的方法,这篇博客介绍一下使用PL/SQL Developer工具导入导出Oracle数据库的方法. PL/SQL Developer是Oracle数据 ...

  4. mysql导出数据库几种方法

    方法一 cmd 到mysql bin目录下用 如下命令 mysqldump --opt -h192.168.0.156 -uusername -ppassword --skip-lock-tables ...

  5. dataTables.js 响应式/package-lock.json 作用/eclipse 目录和工作区建立连接/navcat 导出数据库/vscode 快速进入方法

    下班时间到啦! --下班都是他们的,而我,什么都没有. 什么周五放松日,什么五四青年节,什么都么有.继续总结一下今天遇到的问题. dataTables.js 响应式 使用dataTables.js创建 ...

  6. .net mvc 站点自带简易SSL加密传输 Word报告自动生成(例如 导出数据库结构) 微信小程序:动画(Animation) SignalR 设计理念(一) ASP.NET -- WebForm -- ViewState ASP.NET -- 一般处理程序ashx 常用到的一些js方法,记录一下 CryptoJS与C#AES加解密互转

    .net mvc 站点自带简易SSL加密传输   因项目需要,传输数据需要加密,因此有了一些经验,现简易抽出来分享! 请求:前端cryptojs用rsa/aes 或 rsa/des加密,后端.net ...

  7. mysql 导入导出数据库、数据表的方法

    mysql 导入导出数据库.数据表的方法. Linux操作系统中,均在控制台下操作.1,导入数据库:前提:数据库和数据表要存在(已经被创建)(1)将数据表 test_user.sql 导入到test ...

  8. PL/SQL Developer导入导出Oracle数据库方法

    前一篇博客介绍了Navicat工具备份Oracle的方法.这篇博客介绍一下使用PL/SQL Developer工具导入导出Oracle数据库的方法. PL/SQL Developer是Oracle数据 ...

  9. MySQL修改root密码的多种方法, mysql 导出数据库(包含视图)

    方法1: 用SET PASSWORD命令 mysql -u root mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('newpass ...

随机推荐

  1. Windows平台下使用ffmpeg和segmenter实现m3u8直播点播

    1.安装windows media service 实现 流媒体服务器功能   2.windows media编码器 实现 直播推流   3.使用 vlc 将 mms://127.0.0.1/live ...

  2. C#编程总结(十)字符转码

    C#编程总结(十)字符转码 为了适应某种特殊需要,字符需要根据规则进行转码,便于传输.展现以及其他操作等. 看看下面的转码,就知道他的用处了. 1.字符串转码 根据原编码格式与目标编码格式,完成转换. ...

  3. SSH实例(5)

    在src中新建struts.xml文件: <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE ...

  4. XPath的使用

    最近在mybatis的时候,发现源码中出现了这样的一句代码 private void configurationElement(XNode context) { try { String namesp ...

  5. object references an unsaved transient instance - save the transient instance before flushing错误

    异常1:not-null property references a null or transient value解决方法:将“一对多”关系中的“一”方,not-null设置为false(参考资料: ...

  6. 通过HttpWebRequest请求https接口

    一.为什么进行代理接口的开发: 有些项目需要访问被墙了哒网站,比如前不久公司开发项目需要使用google地图的接口,而google在中国被墙了,所有打算做一个代理接口服务,将代理放到国外服务器上,通过 ...

  7. Linux下安装mongodb详细过程

    本次安装mongodb使用yum.repo方式.详细过程请参考,也列出一些安装过程中的错误,欢迎指正. mongodb版本:3.0 先在linux下cd 到 /etc/yum.repos.d/ 新建脚 ...

  8. MyEclipse10 中的两种FreeMarker插件的安装与配置

    第一个插件是:                                       freemarker-ide MyEclipce10.0中安装FreeMarker插件,这绝对是最简单的方法 ...

  9. Git远程和分支管理

    一.远程       Git是分布式版本控制系统,最重要的优点就是远程仓库托管代码.不用自己搭建一个服务器,在github上面注册一个账户就可免费获取远程仓库.      首先需要先在github上面 ...

  10. 更加简洁易用——wangEditor富文本编辑器新版本发布

    1. 前言 wangEditor富文本编辑器(www.wangEditor.com)从去年11月份发布,至今已经有将近10各月了.它就像一个襁褓中的小婴儿,在我的努力以及众多使用者的支持下不断摸索.成 ...