php读取sql文件导入数据库
发布:smiling 来源: PHP粉丝网 添加日期:2014-09-11 20:20:15 浏览: 评论:0
像这种php读取sql文件导入数据库情况,用得最多的就是数据库备份与还原来了,原理很简单按指定格式导入成.sql文件或利用phpmyadmin导出都可以用本程序来实现导入,代码如下:
- function into_sql($file)
- {
- global $mysql_host,$mysql_user,$mysql_password,$mysql_db,$mysql_table_prefix,$dbcharset;//获取数据库配置信息
- mysql_connect($mysql_host,$mysql_user,$mysql_password);
- mysql_select_db($mysql_db);
- if( mysql_get_server_info() < '4.1' )
- //返回 link_identifier 所使用的服务器版本。如果省略 link_identifier,则使用上一个打开的连接。
- {
- $dbcharset='';//设置字符集,如果mysql版本低于4.1,则不设置字符集信息
- }
- if(emptyempty($dbcharset))
- {
- $dbcharset='gbk';
- }
- $dbcharset && mysql_query("set names '$dbcharset'");// 设置字符集
- if( mysql_get_server_info() > '5.0' )
- {
- mysql_query("set sql_mode=''");
- }
- $file2=file_get_contents($file);
- $file2=iconv("utf-8","gbk",$file2);
- $file2=str_replace("seo教程_",$mysql_table_prefix,$file2);//将文件中数据库表前缀换成用户设定的前缀
- $file2=explode("n",$file2);//将文件内容按行读入到数组
- $c1=count($file2);
- for($j=0;$j<$c1;$j++)
- {
- $ck=substr($file2[$j],0,4);//取每行的前4个字符
- if( ereg("#",$ck)||ereg("--",$ck) )//去掉注释
- {
- continue;
- }
- $arr[]=$file2[$j];//将去掉注释的文件内容按行读入数组$arr,数组每个元素对应一行
- }
- $read=implode("n",$arr); //重新组织文件内容到一个字符串,(按照原来分好的一行一行的)
- $sql=str_replace("r",'',$read);//去掉"r(回车符)"
- $detail=explode(";n",$sql);
- //将经上述整理过的文件内容再次按一条完整的sql语句(以;和n分隔)导入到数组$detail,
- //此时数组detail的每个元素对应一条完整的sql语句
- $count=count($detail);
- for($i=0;$i<$count;$i++)
- {
- $sql=str_replace("r",'',$detail[$i]);//去掉每行sql中的回车符
- $sql=str_replace("n",'',$sql);//去掉换行符
- $sql=trim($sql);//去掉前后空格
- //现在的$sql
- if($sql)
- {
- if(eregi("create table",$sql))//如果当前的sql语句是创建新表,则考虑版本兼容,以及重设字符集
- {
- //$mysqlv=mysql_get_server_info();
- $sql=preg_replace("/default charset=([a-z0-9]+)/is","",$sql);//去除原来的字符集设置信息
- $sql=preg_replace("/type=myisam/is","engine=myisam",$sql);
- if($dbcharset)
- {
- $sql=str_replace("engine=myisam"," engine=myisam default charset=$dbcharset ",$sql);
- }
- if(mysql_get_server_info()<'4.1')
- {//开源代码phpfensi.com
- $sql=preg_replace("/engine=myisam/is","type=myisam",$sql);//
- }
- }
- mysql_query($sql);
- }
- }
- }
Tags: php读取sql php文件导入
- 上一篇:php连接mysql数据库
- 下一篇:php连接mssql 数据库配置与演示代码
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)