Heim  >  Artikel  >  Backend-Entwicklung  >  php导入大量数据到mysql(示例)

php导入大量数据到mysql(示例)

WBOY
WBOYOriginal
2016-07-25 08:54:581780Durchsuche
  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. ?>
复制代码


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn