>  기사  >  백엔드 개발  >  PHP는 mysql로 ​​대량의 데이터를 가져옵니다(예)

PHP는 mysql로 ​​대량의 데이터를 가져옵니다(예)

WBOY
WBOY원래의
2016-07-25 08:54:581781검색
  1. //快速Mysql的大数据备份

  2. //使用前请首先按照代码注释修改要导入的SQL文件名、数据库主机名、数据库用户名、密码、数据库名。
  3. //同时将数据库文件和文本一起ftp导网站目录,然后以WEB方式访问此文件即
  4. //edit: bbs.it-home.org
  5. $file_name="bn_site.sql";//要导入的SQL文件名
  6. $dbhost="localhost";//数据库主机名
  7. $dbuser="root";//数据库用户名
  8. $dbpass="";//数据库密码
  9. $dbname="bn_site"; //数据库名
  10. set_time_limit(0);//设置超时间为0,表示一直执行。当php在safe mode模式下无效此时就会导入超时,此时需要分段导入
  11. $fp=@fopen($file_name,"r") or die ("不能打开SQL文件");//打开文件
  12. mysql_connect($dbhost,$dbuser,$dbpass) or die("不能连接数据库"); //连接数据库
  13. mysql_select_db($dbname) or die("不能打开数据库");//打开数据库
  14. echo "正在执行导入操作";
  15. while($SQL=GETNEXTSQL()){
  16. if(!mysql_query($sql)){
  17. echo "执行出错:".mysql_error()."
    ";
  18. echo "SQL语句为:
    ".$SQL."
    ";
  19. };

  20. }

  21. echo "导入完成";

  22. fclose($fp) or die ("can"t close file $file"); //关闭文件

  23. mysql_close();
  24. //从文件中逐条取SQL
  25. function GETNETSQL(){
  26. global $fp;
  27. $sql="";
  28. while( $line=@fgets($fp,40960)){
  29. $line=trim($line);
  30. //一下三句在高版本php中不需要,在部分低版本中也许需要修改
  31. $line = str_replace(“\”,”\”,$line);
  32. $line = str_replace(“’”,”‘”,$line);
  33. $line = str_replace(“\r\n”,chr(13).chr(10),$line);
  34. if (strlen($line)>1){
  35. if ($line[0]=="-"&& $line[1]=="-"){
  36. continue;
  37. }
  38. }

  39. $sql.=$line.chr(13).chr(10);

  40. if (strlen($line)>0){
  41. if ($line[strlen($line)-1]==";"){
  42. break;
  43. }
  44. }
  45. }
  46. return $sql;
  47. }
  48. ?>

复制代码


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.