Directadmin面板导入大SQL文件.

一般人多数据库应该也米达到几十MB的。但是也是有人达到了。就算可以导入。但是有的主机商也有限制post提交文件大小的现在。我们家的最低限制是50M。也应该是够用了。有的则不是。今天在 红色石头 那看到了这个,亲自试了一下。效果不错。速度也快。这样解决了大文件不能导入PHPMYADMIN的问题。可导入的时候脚本超时的问题!

下面来代码:

<?php
$file = $_GET['f'];
define('DB_NAME', 'xxx');
define('DB_USER', 'xxx');
define('DB_PASSWORD', 'xxx');
define('DB_HOST', 'localhost:3306');
/*直接copy您wordpress数据库设置部分即可*/
$mysql = mysql_connect(DB_HOST,DB_USER,DB_PASSWORD) or die("mysql connect fail, wrong password");
mysql_select_db(DB_NAME)or die("select DB fail");
mysql_query("set names utf8");
$fp = fopen($file . '.sql',"r") or die('can not open file');
$line = '';
while (!feof($fp)) {
    $line .= fgets($fp);
    //以;结尾,那么执行这一行
    if(preg_match("/\;$/",$line)) {
        mysql_query( $line );
        if( mysql_error()) {
            echo mysql_error()."<br />";
        }
        else{
            $n ++;
        }
        $line = '';
    }
}
fclose($fp);
echo "<br />mysql queries:".$n;
?>

实现原理:

采用了php默认函数 fopen 来循环读取每行数据。如果读到是一条整体语句。就调用mysql_query 执行写入。

说白了就是一条条读取。一条条的写入。

文章来自 红色石头   http://50vip.com/blog.php?i=282

相关文章

已有 29 条评论
  1. 公子

    这个不错。。。

    公子 回复
    1. 枫叶红秋雨

      @公子

      @公子 大文件必备

      枫叶红秋雨 回复
  2. 渣浆泵

    这个很不错的啊

    渣浆泵 回复
  3. 马力说

    蛋疼啊,看到晚了,之前几十M的数据库不能备份和导入,可把我折腾惨了,不是程序员真TM苦逼啊

    马力说 回复
    1. 枫叶红秋雨

      @马力说

      @马力说 这次保留着拔。其实还有一个笨方法。就是一次备份几个表。然后在一个个倒进去

      枫叶红秋雨 回复
  4. 视频贺卡

    觉得这个很不错的啊

    视频贺卡 回复
  5. tiandi

    变相解决的一种方法啊。

    tiandi 回复
  6. Leniy

    直接用分号判断语句后直接执行,如果正文中有sql代码怎么办?

    Leniy 回复
  7. 沉寂部落

    好东西呀

    沉寂部落 回复
    1. 枫叶红秋雨

      @沉寂部落

      @沉寂部落大文件还是有用的

      枫叶红秋雨 回复
  8. MurphyL

    表示只是用户,对此研究不多~~

    MurphyL 回复
    1. 枫叶红秋雨

      @MurphyL

      @MurphyL这个就是用户要用的。那天数据库大了。主机商限制了上传大小那你就得用到了

      枫叶红秋雨 回复
      1. 神爱

        @枫叶红秋雨

        其实tar.gz一下可以减少好多大小...
        5M的数据库压缩文件只有600-800k

        神爱 回复
        1. 枫叶红秋雨

          @神爱

          @神爱恩。但是有的人不会这么搞

          枫叶红秋雨 回复
  9. 梦月酱

    啊 不错~ 支持MJJ

    梦月酱 回复
  10. 什么值得买

    学习了

    什么值得买 回复
发表新评论