大数据量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万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章