Loading...

phpmyadmin无法导入大的SQL解决方案

2009-05-10 11:16:20 发表于PHP, 网站技术 本文链接: phpmyadmin无法导入大的SQL解决方案

其实导入SQL的最快的方法还是直接登录到服务器上,直接命令行导入,没有开通SSH的服务器可以通过其他服务器中转导入,但是这些方法对于不熟悉linux命令的朋友都显得比较麻烦。所以,我昨天晚上就花了一点时间,写了一个简陋的php文件,用于导入大的sql到新的mysql数据库中。

内容如下
define('DB_NAME', 'wordpress');
define('DB_USER', 'wordpress');
define('DB_PASSWORD', 'wordpress');
define('DB_HOST', 'localhost');
/*直接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("db.sql","r") or die('can not open file');
while( $s = fgets( $fp,100000 ) ){
$m .= $s;
}
$sql_content = explode(";\n",$m);
$i = 0;
$max = count($sql_content) ;
while( $i < $max ){
mysql_query( $sql_content [$i] );
if( mysql_error()) echo mysql_error()."<br />";
else{
$n ++;
}
$i ++;
}
echo "<br />mysql queries:".$n;
fclose($fp);

导入就很简单了,将需要导入的sql文件命名为db.sql,上传到网站根目录,将上面的代码保存为import.php也上传到根目录,然后运行import.php,即可完成数据库的导入。
当然,您也可以直接下载这个文件:import

注意:导入之后,请一定要删除或者重命名这个import.php文件

标签:,
发表于 2009-05-10 11:16:20 目录:PHP, 网站技术 [RSS 2.0] 你可以发表评论, 或者从您的网站 trackback
已经有16位大师动手指导 拒绝低俗
  • 1楼 孤客 在2009.05.10 11:27发表评论如下: 回复

    好东西啊 收藏了 哈哈多给我们扫扫盲

    • 2楼 openboy 在2009.05.10 12:53发表评论如下: 回复

      太好的东西了。。。

      • 3楼 Fengshen 在2009.05.10 14:44发表评论如下: 回复

        我靠!这个真快捷!强啊!

        • 4楼 逍遥云中仙 在2009.05.13 14:46发表评论如下: 回复

          原来你的站点是这里啊!

          • 5楼 llf535 在2009.06.11 16:14发表评论如下: 回复

            这得收藏下,有用…

            • [...] 其实以前写过一次phpmyadmin无法导入大文件的解决方案,然而有些东西,若不点透,还是会有很大批的网友不明白怎么操作。所以下面我只告诉步骤,不再讲任何原理,事实证明,任何原理,懂的人没有必要看,不懂的人他们不会去看,即使原理很浅显。 [...]

              • 7楼 bigCat 在2009.06.26 23:43发表评论如下: 回复

                用mysqldumper或国产的帝国备份王都可以很顺利的导入导出大文件

                • 7楼附属品 江东 在2009.06.26 23:46发表评论如下: 回复

                  你们呀,都不早说,害得我自己动手,哈哈。

                  • 7楼附属品 bigCat 在2009.06.27 00:23发表评论如下: 回复

                    挖哈哈,当初为phpmyadmin苦恼,还专门去分割sql,分批导入…折腾

                • 8楼 liveasx 在2009.10.28 11:34发表评论如下: 回复

                  帝国备份不会搞,还是你这个好.

                  • 9楼 maker 在2009.12.16 09:32发表评论如下: 回复

                    容易超时吧。

                    • 10楼 夜阑如水-梦里菊香- mysql大数据转移解决方案 在2010.03.01 13:12发表评论如下: 回复

                      [...] 其实以前写过一次phpmyadmin无法导入大文件的解决方案,然而有些东西,若不点透,还是会有很大批的网友不明白怎么操作。所以下面我只告诉步骤,不再讲任何原理,事实证明,任何原理,懂的人没有必要看,不懂的人他们不会去看,即使原理很浅显。 [...]

                      • 11楼 求索阁 在2010.08.09 15:30发表评论如下: 回复

                        使用此法,运行import.php后出现乱码~~~怎么回事呀啊?

                        • 12楼 lxvoip 在2011.03.17 15:09发表评论如下: 回复

                          Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 133441658 bytes) in /import.php on line 22

                          这是怎么回事

                          • 12楼附属品 求索阁 在2011.05.24 20:09发表评论如下: 回复

                            我也遇到你这样的问题 Fatal error: Allowed memory size of 134217728 bytes exhausted 。。。

                          • [...] 放上源码,来自这里,我做了些修改。 <?php //基本参数 Base Options define('DB_NAME', 'test');  //数据库名 DataBase Name define('DB_USER', 'root');  //数据库用户名 DataBase User define('DB_PASSWORD', 'root');  //数据库密码 DataBase Password define('DB_HOST', 'localhost');  //数据库地址 DataBase Address define('DB_CHARSET', 'utf8');  //数据库编码 DataBase Charset define('DB_FILE', 'test.sql');  //导入备份文件名 BackupFile Name //核心代码 Core $mysql = mysql_connect(DB_HOST,DB_USER,DB_PASSWORD) or die("mysql connect fail!"); mysql_select_db(DB_NAME) or die("select DataBase fail!"); mysql_query("set names ".DB_CHARSET); $fp = fopen(DB_FILE,"r") or die('can not open file!'); while( $s = fgets( $fp,100000 ) ){     $m .= $s; } $sql_content = explode(";n",$m); $i = 0; $max = count($sql_content) ; while( $i < $max ){     mysql_query( $sql_content[$i] );     if( mysql_error()) echo mysql_error()."<br />Error!";     else{           $n ++;     }     $i ++; } echo "<br />mysql queries:".$n."<br />Done!"; fclose($fp); ?> [...]

                            评论分页: 1
                            (Required)
                            (Required, not published)
                            如果留言未显示无需重复留言,我将为你恢复!