首页 >php教程 >php手册 >php读取sql文件导入数据库

php读取sql文件导入数据库

WBOY
WBOY原创
2016-05-26 15:21:532192浏览

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

<?php
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() < &#39;4.1&#39;)
    //返回 link_identifier 所使用的服务器版本。如果省略 link_identifier,则使用上一个打开的连接。
    {
        $dbcharset = &#39;&#39;; //设置字符集,如果mysql版本低于4.1,则不设置字符集信息
        
    }
    if (emptyempty($dbcharset)) {
        $dbcharset = &#39;gbk&#39;;
    }
    $dbcharset && mysql_query("set names &#39;$dbcharset&#39;"); // 设置字符集
    if (mysql_get_server_info() > &#39;5.0&#39;) {
        mysql_query("set sql_mode=&#39;&#39;");
    }
    $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", &#39;&#39;, $read); //去掉"r(回车符)"
    $detail = explode(";n", $sql);
    //将经上述整理过的文件内容再次按一条完整的sql语句(以;和n分隔)导入到数组$detail,
    //此时数组detail的每个元素对应一条完整的sql语句
    $count = count($detail);
    for ($i = 0; $i < $count; $i++) {
        $sql = str_replace("r", &#39;&#39;, $detail[$i]); //去掉每行sql中的回车符
        $sql = str_replace("n", &#39;&#39;, $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() < &#39;4.1&#39;) { //开源代码phprm.com
                    $sql = preg_replace("/engine=myisam/is", "type=myisam", $sql); //
                    
                }
            }
            mysql_query($sql);
        }
    }
}


永久地址:

转载随意~请带上教程地址吧^^

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn