1. 首先要得到该数据库中有哪些表,所用函数 mysql_list_tables(),然后可以将获取的所有表名存到一个数组。----------------该函数由于被弃用   用show tables from database_name代替
2. show create table 表名 可以获取表结构。
3. select * from 表名 取出所有记录,用循环拼接成 insert into... 语句。

<?php

 header("Content-type:text/html;charset=utf-8");

 //配置信息
$cfg_dbhost = 'localhost';
$cfg_dbname = 'ftdm';
$cfg_dbuser = 'root';
$cfg_dbpwd = 'root';
$cfg_db_language = 'utf8';
$to_file_name = "ftdm.sql";
// END 配置
//链接数据库
$link = mysql_connect($cfg_dbhost,$cfg_dbuser,$cfg_dbpwd);
mysql_select_db($cfg_dbname);
//选择编码
mysql_query("set names ".$cfg_db_language);
//数据库中有哪些表
//$tables = mysql_list_tables($cfg_dbname);
$query = "show tables from $cfg_dbname";
$tables = mysql_query($query,$link);
//将这些表记录到一个数组 $tabList = array(); while($row = mysql_fetch_row($tables)){ $tabList[] = $row[0]; } echo "运行中,请耐心等待...<br/>"; $info = "-- ----------------------------\r\n"; $info .= "-- 日期:".date("Y-m-d H:i:s",time())."\r\n"; $info .= "-- 仅用于测试和学习,本程序不适合处理超大量数据\r\n"; $info .= "-- ----------------------------\r\n\r\n"; file_put_contents($to_file_name,$info,FILE_APPEND); //将每个表的表结构导出到文件 foreach($tabList as $val){ $sql = "show create table ".$val; $res = mysql_query($sql,$link); $row = mysql_fetch_array($res); $info = "-- ----------------------------\r\n"; $info .= "-- Table structure for `".$val."`\r\n"; $info .= "-- ----------------------------\r\n"; $info .= "DROP TABLE IF EXISTS `".$val."`;\r\n"; $sqlStr = $info.$row[1].";\r\n\r\n"; //追加到文件 file_put_contents($to_file_name,$sqlStr,FILE_APPEND); //释放资源 mysql_free_result($res); } //将每个表的数据导出到文件 foreach($tabList as $val){ $sql = "select * from ".$val; $res = mysql_query($sql,$link); //如果表中没有数据,则继续下一张表 if(mysql_num_rows($res)<1) continue; // $info = "-- ----------------------------\r\n"; $info .= "-- Records for `".$val."`\r\n"; $info .= "-- ----------------------------\r\n"; file_put_contents($to_file_name,$info,FILE_APPEND); //读取数据 while($row = mysql_fetch_row($res)){ $sqlStr = "INSERT INTO `".$val."` VALUES ("; foreach($row as $zd){ $sqlStr .= "'".$zd."', "; } //去掉最后一个逗号和空格 $sqlStr = substr($sqlStr,0,strlen($sqlStr)-2); $sqlStr .= ");\r\n"; file_put_contents($to_file_name,$sqlStr,FILE_APPEND); } //释放资源 mysql_free_result($res); file_put_contents($to_file_name,"\r\n",FILE_APPEND); } echo "OK!"; ?>

  

PHP实现把MySQL数据库导出为.sql文件实例(仿PHPMyadmin导出功能)的更多相关文章

  1. mysql数据库批量执行sql文件对数据库进行操作【windows版本】

    起因: 因工作需要,在本机测试环境升级mysql数据库,需逐条执行mysql数据库的sql文件对数据库进行升级,因此找了些关于mysql的文章,对批量升级数据库所需的sql文件进行升级. 整理思路: ...

  2. mysql数据库导入导出文件sql文件

    window下 1.导出整个数据库 mysqldump -u 用户名 -p 数据库名 > 导出的文件名 mysqldump -u dbuser -p dbname > dbname.sql ...

  3. MySQL数据库导入外部*.sql文件具体步骤

    如需转载请标明出处:http://blog.csdn.net/itas109 环境: MySQL  50515 Navicat for MySQL 一.导入前提 确保导入的sql文件的host和por ...

  4. MySQL数据库导入到SQL Server

    EXEC master.dbo.sp_addlinkedserver @server = N'MYSQL2', @srvproduct=N'mySQL', @provider=N'MSDASQL', ...

  5. MySQL数据库基本操作以及SQL语句

    连接mysql的语法 mysql -u用户名 -p密码 [-h主机名] [-P端口号] 在一个mysql服务器中, 可以有多个mysql数据库(本质是一个文件夹) 在一个mysql数据库中, 可以有多 ...

  6. 使用Sql Server Management Studio 2008将数据导出到Sql文件中

      最近需要将一个Sql Server 2005数据库中的数据导出,为了方便,就希望能导出成Sql文件,里面包含的数据是由Insert 语句组成的. 在Sql Server Management St ...

  7. MySQL数据库企业级应用实践(多实例源码编译)

    MySQL数据库企业级应用实践(多实例源码编译) 链接:https://pan.baidu.com/s/1ANGg3Kd_28BzQrA5ya17fQ 提取码:ekpy 复制这段内容后打开百度网盘手机 ...

  8. plsql 把数据导出成为 .sql文件,记住了

    今天上午,同事 提醒我.可以直接把数据导出成 .sql 文件,类似于 反编译.见下图

  9. 将mysql数据库数据导出为.sql文件

    打开Navicat ,在我们要到处的数据上面右击鼠标,然后弹出的快捷菜单上点击“转储SQL 文件”,在再次弹出的子菜单项中选择第一个“数据跟结构”.

随机推荐

  1. python第一篇:Python 字符串编

    Python字符串编码 字符串编码的前世今生 1. 一个字节由8个bit组成,所以1个字节能表示的最大数为255: 2. 计算机是美国人发明的,所以一个字节可以表示所有的字符了,所以ASCII就成为美 ...

  2. php数组转换成js可用的数组的两种方式

    1.如果你理解JSON数据格式的话,这个问题就异常简单: <?php $a =array('1','2','3'); ?> <script language="javasc ...

  3. c# ListBox

    1. ListBox用法(http://www.cnblogs.com/chinahbzm/articles/3577285.html) 2. ListBox使用(http://www.cnblogs ...

  4. JavaUtil_08_StringUtil_commons-lang3 之 StringUtils

    二.参考资料 1.[commons]字符串工具类——commons-lang3之StringUtils

  5. EasyDarwin+ffmpeg进行PC(摄像头+麦克风)流媒体直播服务

    上一回我们描述了用EasyDarwin+ffmpeg进行摄像机直播的过程:ffmpeg推送,EasyDarwin转发,vlc播放 实现整个RTSP直播 我们再进行一个方面的描述,那就是pc摄像头+麦克 ...

  6. 雅礼集训 2017 Day2 水箱 可并堆

    题目描述 给出一个长度为 n 宽度为 1 ,高度无限的水箱,有 n−1  个挡板将其分为 n 个 1 - 1 的小格,然后向每个小格中注水,水如果超过挡板就会溢出到挡板的另一边,这里的水是满足物理定律 ...

  7. 1022 Digital Library (30)(30 分)

    A Digital Library contains millions of books, stored according to their titles, authors, key words o ...

  8. ACM学习历程—HDU 5073 Galaxy(数学)

    Description Good news for us: to release the financial pressure, the government started selling gala ...

  9. Parallel Programming-Paralle.For && ForEach

    本文主要介绍Parallel.For以及Parallel.ForEach.Parallel.For是普通步长为1的for循环的并行代替方案.Parallel.ForEach是以集合为基准进行循环的fo ...

  10. Poj1050_To the Max(二维数组最大字段和)

    一.Description Given a two-dimensional array of positive and negative integers, a sub-rectangle is an ...