当前位置:首页 > PHP教程 > php应用 > 列表

php读取sql文件导入数据库

发布:smiling 来源: PHP粉丝网  添加日期:2014-09-11 20:20:15 浏览: 评论:0 

像这种php读取sql文件导入数据库情况,用得最多的就是数据库备份与还原来了,原理很简单按指定格式导入成.sql文件或利用phpmyadmin导出都可以用本程序来实现导入,代码如下:

  1. function into_sql($file
  2.    global $mysql_host,$mysql_user,$mysql_password,$mysql_db,$mysql_table_prefix,$dbcharset;//获取数据库配置信息 
  3.     mysql_connect($mysql_host,$mysql_user,$mysql_password); 
  4.     mysql_select_db($mysql_db); 
  5.     if( mysql_get_server_info() < '4.1' ) 
  6.     //返回 link_identifier 所使用的服务器版本。如果省略 link_identifier,则使用上一个打开的连接。  
  7.     { 
  8.         $dbcharset='';//设置字符集,如果mysql版本低于4.1,则不设置字符集信息 
  9.     } 
  10.  if(emptyempty($dbcharset)) 
  11.  { 
  12.   $dbcharset='gbk'
  13.  } 
  14.     $dbcharset && mysql_query("set names '$dbcharset'");// 设置字符集 
  15.     if( mysql_get_server_info() > '5.0' ) 
  16.     { 
  17.         mysql_query("set sql_mode=''"); 
  18.     } 
  19.     $file2=file_get_contents($file); 
  20.  $file2=iconv("utf-8","gbk",$file2); 
  21.     $file2=str_replace("seo教程_",$mysql_table_prefix,$file2);//将文件中数据库表前缀换成用户设定的前缀 
  22.    
  23.     $file2=explode("n",$file2);//将文件内容按行读入到数组 
  24.     $c1=count($file2); 
  25.     for($j=0;$j<$c1;$j++) 
  26.     { 
  27.         $ck=substr($file2[$j],0,4);//取每行的前4个字符 
  28.         ifereg("#",$ck)||ereg("--",$ck) )//去掉注释 
  29.         { 
  30.             continue
  31.         } 
  32.         $arr[]=$file2[$j];//将去掉注释的文件内容按行读入数组$arr,数组每个元素对应一行 
  33.     } 
  34.     $read=implode("n",$arr); //重新组织文件内容到一个字符串,(按照原来分好的一行一行的) 
  35.     $sql=str_replace("r",'',$read);//去掉"r(回车符)" 
  36.     $detail=explode(";n",$sql); 
  37.     //将经上述整理过的文件内容再次按一条完整的sql语句(以;和n分隔)导入到数组$detail, 
  38.     //此时数组detail的每个元素对应一条完整的sql语句 
  39.     $count=count($detail); 
  40.     for($i=0;$i<$count;$i++) 
  41.     { 
  42.         $sql=str_replace("r",'',$detail[$i]);//去掉每行sql中的回车符 
  43.         $sql=str_replace("n",'',$sql);//去掉换行符 
  44.         $sql=trim($sql);//去掉前后空格 
  45.         //现在的$sql 
  46.         if($sql
  47.         { 
  48.             if(eregi("create table",$sql))//如果当前的sql语句是创建新表,则考虑版本兼容,以及重设字符集 
  49.             { 
  50.                 //$mysqlv=mysql_get_server_info(); 
  51.                 $sql=preg_replace("/default charset=([a-z0-9]+)/is","",$sql);//去除原来的字符集设置信息 
  52.                 $sql=preg_replace("/type=myisam/is","engine=myisam",$sql); 
  53.                 if($dbcharset
  54.                 { 
  55.                     $sql=str_replace("engine=myisam"," engine=myisam default charset=$dbcharset ",$sql); 
  56.                 } 
  57.                 if(mysql_get_server_info()<'4.1'
  58.                 {//开源代码phpfensi.com 
  59.                     $sql=preg_replace("/engine=myisam/is","type=myisam",$sql);// 
  60.                 } 
  61.             } 
  62.             mysql_query($sql); 
  63.         } 
  64.     } 
  65. }

Tags: php读取sql php文件导入

分享到: