<?
/******************************************/
/* PhyMyAdmin Data Importer */
/* www.ebugs.org */
/* Copyright 富翁 in im286.com 2005.04.09 */
/* 轉載請註明出處 */
/******************************************/
//用來快速Mysql的大數據備份
//使用前請首先按照代碼註釋修改要導入的SQL文件名、數據庫主機名、數據庫用戶名、密碼、數據庫名
//同時將數據庫文件和本文本一起ftp導網站目錄,然後以web方式訪問此文件即可
//落伍(www.im286.com)負翁版權所有,可隨意使用,但保留版權信息
$file_name="a.sql"; //要導入的SQL文件名
$dbhost="localhost"; //數據庫主機名
$dbuser="anonymous"; //數據庫用戶名
$dbpass=""; //數據庫密碼
$dbname="test"; //數據庫名
set_time_limit(0); //設置超時時間爲0,表示一直執行。當php在safe mode模式下無效,此時可能會導致導入超時,此時需要分段導入
$fp = @fopen($file_name, "r") or die("不能打開SQL文件 $file_name");//打開文件
mysql_connect($dbhost, $dbuser, $dbpass) or die("不能連接數據庫 $dbhost");//連接數據庫
mysql_select_db($dbname) or die ("不能打開數據庫 $dbname");//打開數據庫
echo "正在執行導入操作<span><br>";
while($SQL=GetNextSQL()){
if (!mysql_query($SQL)){
echo "<font color=red>執行出錯:".mysql_error()."</font><br>";
echo "SQL語句爲:<br>".$SQL."<br>";
};
}
echo "導入完成</span>";
fclose($fp) or die("Can't close file $file_name");//關閉文件
mysql_close();
//從文件中逐條取SQL
function GetNextSQL() {
global $fp;
$sql="";
while ($line = @fgets($fp, 40960)) {
$line = trim($line);
//以下三句在高版本php中不需要,在部分低版本中也許需要修改
$line = str_replace("////","//",$line);
$line = str_replace("/'","'",$line);
$line = str_replace("//r//n",chr(13).chr(10),$line);
// $line = stripcslashes($line);
if (strlen($line)>1) {
if ($line[0]=="-" && $line[1]=="-") {
continue;
}
}
$sql.=$line.chr(13).chr(10);
if (strlen($line)>0){
if ($line[strlen($line)-1]==";"){
break;
}
}
}
return $sql;
}
?>
大數據量mysql文件導入程序
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.