大數據量mysql文件導入程序

  1. <?
  2. /******************************************/
  3. /*          PhyMyAdmin Data Importer      */
  4. /*           www.ebugs.org                */
  5. /* Copyright 富翁 in im286.com 2005.04.09 */
  6. /*           轉載請註明出處               */
  7. /******************************************/
  8.  
  9. //用來快速Mysql的大數據備份
  10. //使用前請首先按照代碼註釋修改要導入的SQL文件名、數據庫主機名、數據庫用戶名、密碼、數據庫名
  11. //同時將數據庫文件和本文本一起ftp導網站目錄,然後以web方式訪問此文件即可
  12. //落伍(www.im286.com)負翁版權所有,可隨意使用,但保留版權信息
  13.  
  14.         $file_name="a.sql";  //要導入的SQL文件名
  15.         $dbhost="localhost"; //數據庫主機名
  16.         $dbuser="anonymous"; //數據庫用戶名
  17.         $dbpass="";          //數據庫密碼
  18.         $dbname="test";      //數據庫名
  19.         
  20.         set_time_limit(0); //設置超時時間爲0,表示一直執行。當php在safe mode模式下無效,此時可能會導致導入超時,此時需要分段導入
  21.         $fp = @fopen($file_name, "r") or die("不能打開SQL文件 $file_name");//打開文件
  22.         mysql_connect($dbhost, $dbuser, $dbpass) or die("不能連接數據庫 $dbhost");//連接數據庫
  23.         mysql_select_db($dbname) or die ("不能打開數據庫 $dbname");//打開數據庫
  24.         
  25.         echo "正在執行導入操作<span><br>";
  26.         while($SQL=GetNextSQL()){
  27.                 if (!mysql_query($SQL)){
  28.                         echo "<font color=red>執行出錯:".mysql_error()."</font><br>";
  29.                         echo "SQL語句爲:<br>".$SQL."<br>";
  30.                 };
  31.         }
  32.         echo "導入完成</span>";
  33.  
  34.         fclose($fp) or die("Can't close file $file_name");//關閉文件
  35.         mysql_close();
  36.  
  37.         //從文件中逐條取SQL
  38.         function GetNextSQL() {
  39.                 global $fp;
  40.                 $sql="";
  41.                 while ($line = @fgets($fp, 40960)) {
  42.                         $line = trim($line);
  43.                         //以下三句在高版本php中不需要,在部分低版本中也許需要修改
  44.                         $line = str_replace("////","//",$line);
  45.                         $line = str_replace("/'","'",$line);
  46.                         $line = str_replace("//r//n",chr(13).chr(10),$line);
  47. //                        $line = stripcslashes($line);
  48.                         if (strlen($line)>1) {
  49.                                 if ($line[0]=="-" && $line[1]=="-") {
  50.                                         continue;
  51.                                 }
  52.                         }
  53.                         $sql.=$line.chr(13).chr(10);
  54.                         if (strlen($line)>0){
  55.                                 if ($line[strlen($line)-1]==";"){
  56.                                         break;
  57.                                 }
  58.                         }
  59.                 }
  60.                 return $sql;
  61.         }
  62. ?>
發佈了13 篇原創文章 · 獲贊 1 · 訪問量 11萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章