這是一個將指定
數據庫裡的所有表備份為一個
SQL文件,可
下載。這個源碼來自dedecms程序,功能挺多,也很實用,但是代碼的質量還有待提高
- <!?php
-
- /****** 備份數據庫結構 ******/
-
- /*
- 函數名稱:table2sql()
- 函數功能:把表的結構轉換成為SQL
- 函數參數:$table: 要進行提取的表名
- 返 回 值:返回提取後的結果,SQL集合
- 函數作者:heiyeluren
- */
-
- function table2sql($table)
- {
- global $db;
- $tabledump = "DROP TABLE IF EXISTS $table;\n";
- $createtable = $db--->query("SHOW CREATE TABLE $table");
- $create = $db->fetch_row($createtable);
- $tabledump .= $create[1].";\n\n";
- return $tabledump;
- }
-
-
- /****** 備份數據庫結構和所有數據 ******/
- /*
- 函數名稱:data2sql()
- 函數功能:把表的結構和數據轉換成為SQL
- 函數參數:$table: 要進行提取的表名
- 返 回 值:返回提取後的結果,SQL集合
- 函數作者:heiyeluren
- */
- function data2sql($table)
- {
- global $db;
- $tabledump = "DROP TABLE IF EXISTS $table;\n";
- $createtable = $db->query("SHOW CREATE TABLE $table");
- $create = $db->fetch_row($createtable);
- $tabledump .= $create[1].";\n\n";
-
- $rows = $db->query("SELECT * FROM $table");
- $numfIElds = $db->num_fIElds($rows);
- $numrows = $db->num_rows($rows);
- while ($row = $db->fetch_row($rows))
- {
- $comma = "";
- $tabledump .= "INSERT INTO $table VALUES(";
- for($i = 0; $i < $numfIElds; $i++)
- {
- $tabledump .= $comma."'".MySQL_escape_string($row[$i])."'";
- $comma = ",";
- }
- $tabledump .= ");\n";
- }
- $tabledump .= "\n";
-
- return $tabledump;
- }
- ?>
-
- <!--?php
- $host="localhost"; //主機名
- $user="root"; //MySQL用戶名
- $passWord="root"; //密碼
- $dbname="dedecmsv4"; //備份的數據庫
-
- MySQL_connect($host,$user,$passWord);
- MySQL_select_db($dbname);
-
- $q1=MySQL_query("show tables");
- while($t=MySQL_fetch_array($q1)){
- $table=$t[0];
- $q2=MySQL_query("show create table `$table`");
- $sql=MySQL_fetch_array($q2);
- $MySQL.=$sql['Create Table'].";\r\n\r\n";#DDL
-
- $q3=MySQL_query("select * from `$table`");
- while($data=MySQL_fetch_assoc($q3))
- {
- $keys=array_keys($data);
- $keys=array_map('addslashes',$keys);
- $keys=join('`,`',$keys);
- $keys="`".$keys."`";
- $vals=array_values($data);
- $vals=array_map('addslashes',$vals);
- $vals=join("','",$vals);
- $vals="'".$vals."'";
-
- $MySQL.="insert into `$table`($keys) values($vals);\r\n";
- }
- $MySQL.="\r\n";
-
- }
- $filename=date('Ymd')."_".$dbname.".sql"; //文件名為當天的日期
- $fp = fopen($filename,'w');
- fputs($fp,$MySQL);
- fclose($fp);
- echo "數據備份成功,生成備份文件".$filename;
- ?>