PHP导出数据库方法
(1)定义一个db_dump函数如下:
- <?PHP
- function db_dump($host,$user,$pwd,$db) {
- $mysqlconlink = mysql_connect($host,$user,$pwd , true);
- if (!$mysqlconlink)
- echo sprintf('No MySQL connection: %s',mysql_error())."<br/>";
- mysql_set_charset( 'utf8', $mysqlconlink );
- $mysqldblink = mysql_select_db($db,$mysqlconlink);
- if (!$mysqldblink)
- echo sprintf('No MySQL connection to database: %s',mysql_error())."<br/>";
- $tabelstobackup=array();
- $result=mysql_query("SHOW TABLES FROM `$db`");
- if (!$result)
- echo sprintf('Database error %1$s for query %2$s', mysql_error(), "SHOW TABLE STATUS FROM `$db`;")."<br/>";
- while ($data = mysql_fetch_row($result)) {
- $tabelstobackup[]=$data[0];
- }
- if (count($tabelstobackup)>0) {
- $result=mysql_query("SHOW TABLE STATUS FROM `$db`");
- if (!$result)
- echo sprintf('Database error %1$s for query %2$s', mysql_error(), "SHOW TABLE STATUS FROM `$db`;")."<br/>";
- while ($data = mysql_fetch_assoc($result)) {
- $status[$data['Name']]=$data;
- }
- if ($file = fopen("$db.sql", 'wb')) {
- fwrite($file, "-- ---------------------------------------------------------\n");
- fwrite($file, "-- Database Name: $db\n");
- fwrite($file, "-- ---------------------------------------------------------\n\n");
- fwrite($file, "/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;\n");
- fwrite($file, "/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;\n");
- fwrite($file, "/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;\n");
- fwrite($file, "/*!40101 SET NAMES '".mysql_client_encoding()."' */;\n");
- fwrite($file, "/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;\n");
- fwrite($file, "/*!40103 SET TIME_ZONE='".mysql_result(mysql_query("SELECT @@time_zone"),0)."' */;\n");
- fwrite($file, "/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;\n");
- fwrite($file, "/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;\n");
- fwrite($file, "/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;\n");
- fwrite($file, "/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;\n\n");
- foreach($tabelstobackup as $table) {
- echo sprintf('Dump database table "%s"',$table)."<br/>";
- need_free_memory(($status[$table]['Data_length']+$status[$table]['Index_length'])*3);
- _db_dump_table($table,$status[$table],$file);
- }
- fwrite($file, "\n");
- fwrite($file, "/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;\n");
- fwrite($file, "/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;\n");
- fwrite($file, "/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;\n");
- fwrite($file, "/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;\n");
- fwrite($file, "/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;\n");
- fwrite($file, "/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;\n");
- fwrite($file, "/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;\n");
- fwrite($file, "/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;\n");
- fclose($file);
- echo 'Database dump done!'."<br/>";
- } else {
- echo 'Can not create database dump!'."<br/>";
- }
- } else {
- echo 'No tables to dump'."<br/>";
- }
- }
- function _db_dump_table($table,$status,$file) {
- fwrite($file, "\n");
- fwrite($file, "--\n");
- fwrite($file, "-- Table structure for table $table\n");
- fwrite($file, "--\n\n");
- fwrite($file, "DROP TABLE IF EXISTS `" . $table . "`;\n");
- fwrite($file, "/*!40101 SET @saved_cs_client = @@character_set_client */;\n");
- fwrite($file, "/*!40101 SET character_set_client = '".mysql_client_encoding()."' */;\n");
- $result=mysql_query("SHOW CREATE TABLE `".$table."`");
- if (!$result) {
- echo sprintf('Database error %1$s for query %2$s', mysql_error(), "SHOW CREATE TABLE `".$table."`")."<br/>";
- return false;
- }
- $tablestruc=mysql_fetch_assoc($result);
- fwrite($file, $tablestruc['Create Table'].";\n");
- fwrite($file, "/*!40101 SET character_set_client = @saved_cs_client */;\n");
- $result=mysql_query("SELECT * FROM `".$table."`");
- if (!$result) {
- echo sprintf('Database error %1$s for query %2$s', mysql_error(), "SELECT * FROM `".$table."`")."<br/>";
- return false;
- }
- fwrite($file, "--\n");
- fwrite($file, "-- Dumping data for table $table\n");
- fwrite($file, "--\n\n");
- if ($status['Engine']=='MyISAM')
- fwrite($file, "/*!40000 ALTER TABLE `".$table."` DISABLE KEYS */;\n");
- while ($data = mysql_fetch_assoc($result)) {
- $keys = array();
- $values = array();
- foreach($data as $key => $value) {
- if($value === NULL)
- $value = "NULL";
- elseif($value === "" or $value === false)
- $value = "''";
- elseif(!is_numeric($value))
- $value = "'".mysql_real_escape_string($value)."'";
- $values[] = $value;
- }
- fwrite($file, "INSERT INTO `".$table."` VALUES ( ".implode(", ",$values)." );\n");
- }
- if ($status['Engine']=='MyISAM')
- fwrite($file, "/*!40000 ALTER TABLE ".$table." ENABLE KEYS */;\n");
- }
- function need_free_memory($memneed) {
- if (!function_exists('memory_get_usage'))
- return;
- $needmemory=@memory_get_usage(true)+inbytes($memneed);
- if ($needmemory>inbytes(ini_get('memory_limit'))) {
- $newmemory=round($needmemory/1024/1024)+1 .'M';
- if ($needmemory>=1073741824)
- $newmemory=round($needmemory/1024/1024/1024) .'G';
- if ($oldmem=@ini_set('memory_limit', $newmemory))
- echo sprintf(__('Memory increased from %1$s to %2$s','backwpup'),$oldmem,@ini_get('memory_limit'))."<br/>";
- else
- echo sprintf(__('Can not increase memory limit is %1$s','backwpup'),@ini_get('memory_limit'))."<br/>";
- }
- }
- function inbytes($value) {
- $multi=strtoupper(substr(trim($value),-1));
- $bytes=abs(intval(trim($value)));
- if ($multi=='G')
- $bytes=$bytes*1024*1024*1024;
- if ($multi=='M')
- $bytes=$bytes*1024*1024;
- if ($multi=='K')
- $bytes=$bytes*1024;
- return $bytes;
- }
- ?>
(2)使用方法:
- db_dump('数据库服务器', '数据库用户名', '数据库密码', '数据库名');
PHP导出数据库方法的更多相关文章
- linux导入导出数据库方法 windows导入导出数据库方法
1.使用管理员账号(sys)登录查询字符集信息 第一步:查询LinuxOracle数据库的字符集 select userenv('language') from dual; 查询结果集可能为:AMER ...
- plsql developer导入导出数据库方法
导出步骤: 1 tools ->export user object 选择选项,导出.sql文件 2 tools ->export tables-> Oracle Export 选择 ...
- PL/SQLDeveloper导入导出Oracle数据库方法
前一篇博客介绍了Navicat工具备份Oracle的方法,这篇博客介绍一下使用PL/SQL Developer工具导入导出Oracle数据库的方法. PL/SQL Developer是Oracle数据 ...
- mysql导出数据库几种方法
方法一 cmd 到mysql bin目录下用 如下命令 mysqldump --opt -h192.168.0.156 -uusername -ppassword --skip-lock-tables ...
- dataTables.js 响应式/package-lock.json 作用/eclipse 目录和工作区建立连接/navcat 导出数据库/vscode 快速进入方法
下班时间到啦! --下班都是他们的,而我,什么都没有. 什么周五放松日,什么五四青年节,什么都么有.继续总结一下今天遇到的问题. dataTables.js 响应式 使用dataTables.js创建 ...
- .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 ...
- mysql 导入导出数据库、数据表的方法
mysql 导入导出数据库.数据表的方法. Linux操作系统中,均在控制台下操作.1,导入数据库:前提:数据库和数据表要存在(已经被创建)(1)将数据表 test_user.sql 导入到test ...
- PL/SQL Developer导入导出Oracle数据库方法
前一篇博客介绍了Navicat工具备份Oracle的方法.这篇博客介绍一下使用PL/SQL Developer工具导入导出Oracle数据库的方法. PL/SQL Developer是Oracle数据 ...
- MySQL修改root密码的多种方法, mysql 导出数据库(包含视图)
方法1: 用SET PASSWORD命令 mysql -u root mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('newpass ...
随机推荐
- Windows平台下使用ffmpeg和segmenter实现m3u8直播点播
1.安装windows media service 实现 流媒体服务器功能 2.windows media编码器 实现 直播推流 3.使用 vlc 将 mms://127.0.0.1/live ...
- C#编程总结(十)字符转码
C#编程总结(十)字符转码 为了适应某种特殊需要,字符需要根据规则进行转码,便于传输.展现以及其他操作等. 看看下面的转码,就知道他的用处了. 1.字符串转码 根据原编码格式与目标编码格式,完成转换. ...
- SSH实例(5)
在src中新建struts.xml文件: <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE ...
- XPath的使用
最近在mybatis的时候,发现源码中出现了这样的一句代码 private void configurationElement(XNode context) { try { String namesp ...
- 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(参考资料: ...
- 通过HttpWebRequest请求https接口
一.为什么进行代理接口的开发: 有些项目需要访问被墙了哒网站,比如前不久公司开发项目需要使用google地图的接口,而google在中国被墙了,所有打算做一个代理接口服务,将代理放到国外服务器上,通过 ...
- Linux下安装mongodb详细过程
本次安装mongodb使用yum.repo方式.详细过程请参考,也列出一些安装过程中的错误,欢迎指正. mongodb版本:3.0 先在linux下cd 到 /etc/yum.repos.d/ 新建脚 ...
- MyEclipse10 中的两种FreeMarker插件的安装与配置
第一个插件是: freemarker-ide MyEclipce10.0中安装FreeMarker插件,这绝对是最简单的方法 ...
- Git远程和分支管理
一.远程 Git是分布式版本控制系统,最重要的优点就是远程仓库托管代码.不用自己搭建一个服务器,在github上面注册一个账户就可免费获取远程仓库. 首先需要先在github上面 ...
- 更加简洁易用——wangEditor富文本编辑器新版本发布
1. 前言 wangEditor富文本编辑器(www.wangEditor.com)从去年11月份发布,至今已经有将近10各月了.它就像一个襁褓中的小婴儿,在我的努力以及众多使用者的支持下不断摸索.成 ...