php将mysql数据库整库导出生成sql文件的具体实现
2023-06-13 09:15:15 时间
由网上搜到,有更改。
文件名:db_backup.php
源代码如下:
复制代码代码如下:
文件名:db_backup.php
源代码如下:
<?php
ini_set("max_execution_time","180");//避免数据量过大,导出不全的情况出现。
/*
程序功能:mysql数据库备份功能
作者:唐小刚
说明:
本程序主要是从mysqladmin中提取出来,并作出一定的调整,希望对大家在用php编程时备份数据有一定帮助.
如果不要备份结构:请屏掉这句:echoget_table_structure($dbname,$table,$crlf).";$crlf$crlf";
如果不要备份内容:请屏掉这句:echoget_table_content($dbname,$table,$crlf);
修改者:何锦盛
修改时间:2009/11/7
修改内容:新增函数get_table_structure,注释掉了函数get_table_def,目的是获得更丰富的建表时的细节(如:ENGINE=InnoDBAUTO_INCREMENT=80DEFAULTCHARSET=utf8COLLATE=utf8_unicode_ciCOMMENT="商品信息变更信息")
*/
$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="\r\n";
global$dbconn;
$dbconn=mysql_connect($host,$username,$passw]);//数据库主机,用户名,密码
$db=mysql_select_db($dbname,$dbconn);
mysql_query("SETNAMES"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;
echoget_table_structure($dbname,$table,$crlf).";$crlf$crlf";
//echoget_table_def($dbname,$table,$crlf).";$crlf$crlf";
echoget_table_content($dbname,$table,$crlf);
$i++;
}
/*新增的获得详细表结构*/
functionget_table_structure($db,$table,$crlf)
{
global$drop;
$schema_create="";
if(!empty($drop)){$schema_create.="DROPTABLEIFEXISTS`$table`;$crlf";}
$result=mysql_db_query($db,"SHOWCREATETABLE$table");
$row=mysql_fetch_array($result);
$schema_create.=$crlf."--".$row[0].$crlf;
$schema_create.=$row[1].$crlf;
Return$schema_create;
}
/*
//原来别人的取得数据库结构,但不完整
functionget_table_def($db,$table,$crlf)
{
global$drop;
$schema_create="";
if(!empty($drop))
$schema_create.="DROPTABLEIFEXISTS`$table`;$crlf";
$schema_create.="CREATETABLE`$table`($crlf";
$result=mysql_db_query($db,"SHOWfullFIELDSFROM$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.="NOTNULL";
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,"SHOWKEYSFROM$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.="PRIMARYKEY(".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));
}
*/
//获得表内容
functionget_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="INSERTINTO`$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;
}
?>
相关文章
- Linux新建PHP文件的操作指南(linux新建php文件)
- 锁MySQL中的排他锁实现原理及其作用(mysql排他)
- MySQL 创建普通用户,拥有新世界(mysql创建普通用户)
- PHP助力MySQL实现程序开发梦想(php支持mysql)
- MySQL游标:灵活赋值极大提升效率(mysql游标赋值)
- MySQL数据库:快速编写灵活的SQL语句(编写mysql数据库)
- MySQL索引文件:实现高效查询的关键所在(mysql的索引文件)
- 将Text文件快速导入MySQL数据库(text导入mysql)
- PHP如何正确输出MySQL中文字符避免乱码?(php输出mysql乱码)
- MySQL表容量使用细节,如何提高数据量存储空间利用率?(mysql表的容量)
- PHP轻松加载MySQL模块(php加载mysql模块)
- 详解MySQL数据库建立步骤,轻松搭建个性化数据库(mysql建数据库的步骤)
- 导入导出MySQL大文件快速导入导出策略(mysql大文件)
- Mysql中删除记录的SQL语句(mysql删除sql语句)
- 数据库简单易携:使用单文件 MySQL 数据库(单文件mysql)
- MySQL远程使用:掌握基础知识,远程操作Mysql数据库。(mysql远程使用)
- MySQL导入数据库文件的技巧(mysql导入db文件)
- MySQL中如何导入SQL文件(mysql如何导入sql文件)
- 在MySQL命令行中导入SQL文件(mysql命令行导入sql文件)
- 从CUUG官网上获取MySQL最新信息(cuug官网 mysql)
- MySQL中的dll文件及其作用(mysql中dll)
- 深入理解MySQL内外连接查询操作(mysql中内外连接查询)
- Mysql数据库如何处理XML文件(mysql xml文件)