~~~MYSQL数据库的备份和回存~~~
不知道还有各位朋友知道有什么好方法来解决MYSQL数据库中的备份和回存问题。(不要告诉我将数据库目录中做文件的一个拷贝或使用mysqldump程序。我想在PHP中实现。)
问题点数:30、回复次数:5Top
1 楼leejd(小东)回复于 2001-07-03 11:13:33 得分 10
如果数据量不是很大,可以先读取到有格式的文件中;
恢复则将上面过程反向。Top
2 楼hotwaters(左左)回复于 2001-07-03 11:48:04 得分 0
这个方法我考虑过,但实现起来很麻烦。
(特别是回存时,还要清空数据库,真的很烦。)
还有没有更好的方法。
to leejd
假如数据量大呢?那用什么方法来实现好?Top
3 楼polygame(polygame)回复于 2001-07-04 19:00:00 得分 0
http://y666.net/k666/ib5401/cgi-bin/view.cgi?forum=3&topic=1Top
4 楼polygame(polygame)回复于 2001-07-04 19:01:46 得分 20
用法:
备份:url/back.php?table=tablename
恢复:url/up.php?table=tablename
back.php
<?
if($table=="")exit();
mysql_connect("localhost","root","");
mysql_select_db("polygame");
$result = mysql_query("select * from $table");
if(mysql_num_rows($result) <= 0) exit();
echo "开始转换数据到文本...
";
$handle = fopen("$table.txt","w");
$numfields = mysql_num_fields($result);
fputs($handle,$numfields."\r\n");
for($k=0;$k<mysql_num_rows($result);$k++)
{
$msg = mysql_fetch_row($result);
for($i=0;$i<$numfields;$i++)
{
$msg[$i] = str_replace("\r\n","||回车||",$msg[$i]);
$msg[$i] = str_replace("\n" ,"||回车||",$msg[$i]);
fputs($handle,$msg[$i]."\r\n");
}
}
fclose($handle);
chmod("$table.txt",0777);
echo "ok";
?>
up.php
<?
if($table=="")exit();
mysql_connect("localhost","root","");
mysql_select_db("polygame");
$message = fi1e ("$table.txt");
$numfields = chop($message[0]);
for($k=1;$k<count($message);$k+=($numfields))
{
$no++;
$value="";
for ($i=$k;$i<($k+$numfields-1);$i++)
{
$tmp = str_replace("||回车||","\r\n",chop($message[$i]));
$value .= "'".addslashes($tmp)."',";
}
$tmp = str_replace("||回车||","\r\n",chop($message[$k+$numfields-1]));
$value .= "'".$tmp."'";
$query = "insert into $table values (".$value.")";
print "<br>\r\n";
echo "处理第".$no."条纪录.....";
mysql_query($query) or die("错误");
print "OK";
}
echo "<br><br>全部纪录处理完成!";
?> Top
5 楼hotwaters(左左)回复于 2001-07-05 16:01:41 得分 0
polygame方法可行。
不过我是剽窃phpMyAdmin中的,花了N个时间终于成功了。导入的是整个数据库,一个一个表导入
太麻烦了。
在这里谢谢给过帮助的朋友。~~
加分~~~~Top




