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

php读取sql文件导入数据库

WBOY
Release: 2016-05-26 15:21:53
Original
2187 people have browsed it

像这种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);
        }
    }
}
Copy after login


永久地址:

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

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Recommendations
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template