+ -
当前位置:首页 → 问答吧 → 新写的数据库备份程序

新写的数据库备份程序

时间:2008-02-20

来源:互联网

公司需要一个任务计划自动备份网站数据,简单写了一个,有些小bug,问题不大
需要在php文件所在目录建立一个cache文件夹,用来保存生成的txt备份文件
复制内容到剪贴板
代码:
<?php
header("content-type:text/html; charset=gbk");
set_time_limit(0);
$link=mysql_connect('localhost','root','123456'); //连接数据库
$dbname = 'dbname'; //需要备份的数据库名
mysql_select_db($dbname, $link);
mysql_query("set names gbk;");
$page_size = 10; //每个txt备份文件里insert语句的数量,
$page_font = "#&&&&**************#"; //分页标识,可自定义
function getCreateTableString($table_name)
{
$sql = "SHOW CREATE TABLE $table_name";
$rs = mysql_query($sql);
$row = mysql_fetch_array($rs);
$createTableString = $row[1];
$dropTableString = "DROP TABLE IF EXISTS $table_name;\r\n";
$SQL = $dropTableString.$createTableString;
return $SQL;
}
function getInsertString($table_name, $page_font)
{
$sql = "SELECT * FROM $table_name ";
$rs = mysql_query($sql);
$data_count = mysql_num_rows ( $rs );
$field_count = mysql_num_fields ( $rs );
while ($row = mysql_fetch_array($rs)) {
$comma = "";
$tabledump .= "INSERT INTO $table_name VALUES(";
for($i = 0; $i < $field_count; $i++) {
$tabledump .= $comma."'".mysql_escape_string($row[$i])."'";
$comma = ",";
}
$tabledump .= ");";
$tabledump .= $page_font;
}
return $tabledump;
}
function getInsertPage($tabledump, $page_font)
{
global $page_size;
$array = explode($page_font,$tabledump);
$arr_count = count($array);
if ($arr_count > $page_size) {
$new_array = array_chunk( $array, $page_size);
return $new_array;
}
return $array;
}
function writeToText($insert_array, $tablename)
{
$i = 0;
$count = count($insert_array);
$file_pre = '';
$insert_string_single = '';
foreach ($insert_array as $value) {
$file_name = $tablename;
$i++;
//$insert_string = '';
$file_name = './cache/'.$file_name.'_'.$i.'.txt';
if (is_array($value)) {
$insert_string = '';
foreach ($value as $new_value) {
$insert_string .= $new_value;
$insert_string .="\r\n";
}
if (trim($insert_string_single) != "\r\n") {
if (!$handle = fopen($file_name, 'a')) {
echo "不能打开文件 $file_name";
exit;
}
if (fwrite($handle, $insert_string) === FALSE) {
echo "不能写入到文件 $file_name";
exit;
}
}
} else {
$insert_string_single .= $value;
$insert_string_single .= "\r\n";
}
}
if (trim($insert_string_single) != '' || trim($insert_string_single) != "\r\n") {
if (!$handle = fopen('./cache/'.$tablename.'.txt', 'a')) {
echo "不能打开文件 $file_name";
exit;
}
if (fwrite($handle, $insert_string_single) === FALSE) {
echo "不能写入到文件 $file_name";
exit;
}
}
}
function getTable()
{
global $dbname,$page_font;
$result = mysql_list_tables($dbname);
while ($row = mysql_fetch_row($result)) {
$string = getInsertString($row[0], $page_font);
$string = rtrim($string, $page_font);
$insert_array = getInsertPage($string, $page_font); //得到insert语句的组成数组
writeToText($insert_array, $row[0]);
}
}
//应用示例,直接运行该函数即可
getTable();
?>
[ 本帖最后由 quanhaier 于 2008-2-20 14:19 编辑 ]

作者: quanhaier   发布时间: 2008-02-20

赞 一个~~!

作者: 爱我别走   发布时间: 2008-02-20

鼓励一下~

作者: luzhou   发布时间: 2008-02-20

学习了

作者: ct_174880859   发布时间: 2008-02-20