php将mysql数据库整库导出生成sql文件的详细代码

 下面是php将mysql数据库整库导出生成sql文件的详细代码,希望对大家在用php编程时备份数据有一定帮助

由网上搜到,有更改。 
 
文件名:db_backup.php 
 
源代码如下: 
 代码如下:
<?php 
ini_set("max_execution_time", "180");//避免数据量过大,导出不全的情况出现。 
 
/* 
 
程序功能:mysql数据库备份功能 
作者:唐小刚 
说明: 
本程序主要是从mysqladmin中提取出来,并作出一定的调整,希望对大家在用php编程时备份数据有一定帮助. 
如果不要备份结构:请屏掉这句:echo get_table_structure($dbname, $table, $crlf).";$crlf$crlf"; 
如果不要备份内容:请屏掉这句:echo get_table_content($dbname, $table, $crlf); 
 
修改者:何锦盛 
修改时间:2009/11/7 
修改内容:新增函数get_table_structure,注释掉了函数get_table_def,目的是获得更丰富的建表时的细节(如:ENGINE=InnoDB AUTO_INCREMENT=80 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='商品信息变更信息') 
*/ 
 
$host="";//数据库地址 
 
$dbname="";//这里配置数据库名 
 
$username="";//用户名 
 
$passw="";//这里配置密码 
 
$filename=date("Y-m-d_H-i-s")."-".$dbname.".sql"; 
header("Content-disposition:filename=".$filename);//所保存的文件名 
header("Content-type:application/octetstream"); 
header("Pragma:no-cache"); 
header("Expires:0"); 
 
//备份数据 
$i = 0; 
$crlf="rn"; 
global $dbconn; 
$dbconn = mysql_connect($host,$username,$passw]);//数据库主机,用户名,密码 
$db = mysql_select_db($dbname,$dbconn); 
mysql_query("SET NAMES 'utf8'"); 
$tables =mysql_list_tables($dbname,$dbconn); 
$num_tables = @mysql_numrows($tables); 
print "-- filename=".$filename; 
while($i < $num_tables) 

$table=mysql_tablename($tables,$i); 
print $crlf; 
echo get_table_structure($dbname, $table, $crlf).";$crlf$crlf"; 
//echo get_table_def($dbname, $table, $crlf).";$crlf$crlf"; 
echo get_table_content($dbname, $table, $crlf); 
$i++; 

 
/*新增的获得详细表结构*/ 
function get_table_structure($db,$table,$crlf) 

global $drop; 
 
$schema_create = ""; 
if(!empty($drop)){ $schema_create .= "DROP TABLE IF EXISTS `$table`;$crlf";} 
$result =mysql_db_query($db, "SHOW CREATE TABLE $table"); 
$row=mysql_fetch_array($result); 
$schema_create .= $crlf."-- ".$row[0].$crlf; 
$schema_create .= $row[1].$crlf; 
Return $schema_create; 

 
/* 
//原来别人的取得数据库结构,但不完整 
function get_table_def($db,$table,$crlf) 

global $drop; 
 
$schema_create = ""; 
if(!empty($drop)) 
$schema_create .= "DROP TABLE IF EXISTS `$table`;$crlf"; 
 
$schema_create .= "CREATE TABLE `$table` ($crlf"; 
$result = mysql_db_query($db, "SHOW full FIELDS FROM $table"); 
while($row = mysql_fetch_array($result)) 

$schema_create .= " `$row[Field]` $row[Type]"; 
 
if(isset($row["Default"]) && (!empty($row["Default"]) || $row["Default"] == "0")) 
$schema_create .= " DEFAULT '$row[Default]'"; 
if($row["Null"] != "YES") 
$schema_create .= " NOT NULL"; 
if($row["Extra"] != "") 
$schema_create .= " $row[Extra]"; 
if($row["Comment"] != "") 
$schema_create .= " Comment '$row[Comment]'"; 
$schema_create .= ",$crlf"; 

$schema_create = ereg_replace(",".$crlf."$", "", $schema_create); 
$result = mysql_db_query($db, "SHOW KEYS FROM $table"); 
while($row = mysql_fetch_array($result)) 

$kname=$row['Key_name']; 
if(($kname != "PRIMARY") && ($row['Non_unique'] == 0)) 
$kname="UNIQUE|$kname"; 
if(!isset($index[$kname])) 
$index[$kname] = array(); 
$index[$kname][] = $row['Column_name']; 

 
while(list($x,$columns) = @each($index)) 

$schema_create .= ",$crlf"; 
if($x == "PRIMARY") 
$schema_create .= " PRIMARY KEY (".implode($columns,", ") . ")"; 
elseif (substr($x,0,6) == "UNIQUE") 
$schema_create .= " UNIQUE ".substr($x,7)." (" . implode($columns, ", ") . ")"; 
else 
$schema_create .= " KEY $x (" . implode($columns, ", ") . ")"; 

 
$schema_create .= "$crlf)"; 
return (stripslashes($schema_create)); 

*/ 
 
//获得表内容 
function get_table_content($db, $table, $crlf) 

$schema_create = ""; 
$temp = ""; 
$result = mysql_db_query($db, "SELECT * FROM $table"); 
$i = 0; 
while($row = mysql_fetch_row($result)) 

$schema_insert = "INSERT INTO `$table` VALUES ("; 
for($j=0; $j<mysql_num_fields($result);$j++) 

if(!isset($row[$j])) 
$schema_insert .= " NULL,"; 
elseif($row[$j] != "") 
$schema_insert .= " '".addslashes($row[$j])."',"; 
else 
$schema_insert .= " '',"; 

$schema_insert = ereg_replace(",$", "",$schema_insert); 
$schema_insert .= ");$crlf"; 
$temp = $temp.$schema_insert ; 
$i++; 

return $temp; 

?> 
 

时间: 2024-09-20 00:31:55

php将mysql数据库整库导出生成sql文件的详细代码的相关文章

php将mysql数据库整库导出生成sql文件的具体实现_php技巧

由网上搜到,有更改. 文件名:db_backup.php 源代码如下: 复制代码 代码如下: <?php ini_set("max_execution_time", "180");//避免数据量过大,导出不全的情况出现. /* 程序功能:mysql数据库备份功能 作者:唐小刚 说明: 本程序主要是从mysqladmin中提取出来,并作出一定的调整,希望对大家在用php编程时备份数据有一定帮助. 如果不要备份结构:请屏掉这句:echo get_table_str

Mysql数据库用source命令导入SQL文件

今天我们开发在test服务器上面用phpmyadmin导出了一段SQL语句,让我导入到beta上面的数据库里面,但是beta服务器上面没有安装phpmyadmin软件,看了里面还有删除创建数据表的过程,用mysql命令导入肯定是不行的,难道只能在beta服务器上面安装phpmyadmin软件才能可以导入该SQL语句?该SQL语句如下,我只是截取了其中一部分: -- phpMyAdmin SQL Dump -- version 3.3.9 -- http://www.phpmyadmin.net

【大数据新手上路】“零基础”系列课程--MySQL 数据整库迁移到 MaxCompute

随着公司业务的增多,云数据库 RDS 下的 MySQL 数据库的表越来越多,想要把它全部迁移到 MaxCompute 中进行计算分析,但又愁要配置太多次同步任务.如何能将大量的数据表一次性上传到 MaxCompute 中呢?通过大数据开发套件的整库迁移功能,便可快速完成 MySQL 数据整库迁移到 MaxCompute,从而节省同步时间,提高工作效率. 下面介绍一个适用于中小企业用户,高效率低成本的数据同步方案: 对于自建或云数据库 RDS 的 MySQL 数据库中的数据,都可以通过整库迁移功能

MySQL数据库使用mysqldump导出数据详解_Mysql

mysqldump是mysql用于转存储数据库的客户端程序.它主要产生一系列的SQL语句,可以封装到文件,该文件包含有所有重建您的数据库所需要的 SQL命令如CREATE DATABASE,CREATE TABLE,INSERT等等.可以用来实现轻量级的快速迁移或恢复数据库.是mysql数据库实现逻辑备份的一种方式. 在日常维护工作当中经常会需要对数据进行导出操作,而mysqldump是导出数据过程中使用非常频繁的一个工具:它自带的功能参数非常多,文章中会列举出一些常用的操作,在文章末尾会将所有

mysql导出-怎么让MySql数据库表和数据分开导出为sql文件

问题描述 怎么让MySql数据库表和数据分开导出为sql文件 之前用SQLyog把数据库表和数据导出到同一个文件.然后再导入的时候出错了(原因可能是数据里面有几百M的blob吧.不确定).然后看视频好像有将数据库表和数据分别导出到2个文件的方法,请大神教怎么弄!! 解决方案 http://www.cnblogs.com/yuanyouqi/archive/2010/04/28/1722738.html 解决方案二: 已经知道了..自己结贴

Mysql中文乱码以及导出为sql语句和Excel问题解决方法[图文]_Mysql

一.导出数据. 先说明一下自己的环境:Mac OS X 10.8.3, MySQL Community Server 5.6.10, MySQL Workbench 5.2.47. 我想把本机数据库内的数据迁移到另一台机器上,于是使用Workbench中自带的import/export功能,其实就是调用mysqldump.不幸的是,出现了版本不一致的错误. 错误没治了,最终找到解决方案,可以指定mysql的mysqldump,路径为:/usr/local/mysql/bin/mysqldump,

PHP FOR MYSQL 代码生成助手(根据Mysql里的字段自动生成类文件的)_php技巧

根据 Mysql 里的字段 自动生成 类文件: 但需要导入: require_once ./db/ez_sql_core.php;require_once ./db/ez_sql_mysql.php; 帮助文档:http://jvmultimedia.com/docs/ezsql/ez_sql_help.htm  上图 : 核心代码: 复制代码 代码如下: <?php class db{ /*****************************************************

Mysql中文乱码以及导出为sql语句和Excel问题解决

这几天基于Heritrix写了一个爬虫,用到mysql,在导入导出数据时,遇到一些乱码问题,好不容易解决了,记录一下,以备查看. 一.导出数据. 先说明一下自己的环境:Mac OS X 10.8.3, MySQL Community Server 5.6.10, MySQL Workbench 5.2.47. 我想把本机数据库内的数据迁移到另一台机器上,于是使用Workbench中自带的import/export功能,其实就是调用mysqldump.不幸的是,出现了版本不一致的错误. 错误没治了

浏览器-如何用php文件将数据库中的内容生成xml文件(具体看下图)

问题描述 如何用php文件将数据库中的内容生成xml文件(具体看下图) http://xxx.xxx.xxx/data_xml.php?data=火影 在浏览器里输入之后,显示的是下图内容 但是我想得到并不是这个样子,我想要实现应该是下面这个样子 请问该如何实现?? 解决方案 设置下header("content-type:text/xml") 写在所有输出之前,浏览器就会解读成xml 解决方案二: 需要设置Header 名称:Content-Type 值为:application/r