从MySQL快速导入导出大量数据的程序实现方法

    作者:课课家更新于: 2015-11-03 18:05:56

    大神带你学编程,欢迎选课
    今天由小编为大家讲解有关语言编程的文章,相信对大家一定有很大的帮助

    C语言教程大家一定使用过 myadmin 里面的导入,导出功能,非常方便。但是在实际应用中,我发现如下几个问题:
    1 数据库超过一定尺寸,比如6M 这时使用导出一般没问题,可以正确的保存到本机硬盘上面,但是导入则不行!原因是:一般的 PHP.INI 里面设置临时文件/上传文件的大小限制为2M,而phpmyadmin使用了上传的方式,造成失败。
    2 导出到硬盘的 .SQL 文件在导回时,经常出现由于某些单引号的问题引起失败,造成导入失败,只能用 等应用程序导入了。 我的数据库已经超过10M,所以必须解决这个问题。我的思路:
    导出: 用phpmyadmin 保存数据库/表格结构,用脚本读取数据库内容并保存到文件里面!

    "我从事编程语言统计很多年了,有大量的数据来源包括代码存储库、Q&A讨论、招聘广告、社交媒体情况、教程页面访问、学习视频视图、开发者调查等等。数据发表在不同的时间,都可以被认为是精确的,
    也可以被认为是有缺陷的,但是它们可以用于发现行业趋势。最后,不要期望一夜之间就变成一个编码忍者。有些人有一种天然的能力,但也是花了很多很多时间来磨练他们的技能,不断的学习新的技术和技巧。"

    导入:C语言视频教程 用phpmyadmin 恢复数据库/表格结构,用脚本读取文件,然后保存到库里面!
    导出程序如下:调用方法为 ****.php?table=tablename
    这个简单的程序目前一次保存一个表格!!每行为一个字段的数据!!


    < ?
    if($table==\\\\"\\\\")exit();
    mysql_connect(\\\\"localhost\\\\",\\\\"name\\\\",\\\\"pass\\\\");
    mysql_select_db(\\\\"database\\\\");
    $result = mysql_query(\\\\"select * from $table\\\\");
    if(mysql_num_rows($result) < = 0) exit();
    echo \\\\"开始转换数据到文本...
    \\\\";
    $handle = fopen(\\\\"$table.txt\\\\",\\\\"w\\\\");
    $numfields = mysql_num_fields($result);
    fputs($handle,$numfields.\\\\"\\\\r\\\\n\\\\");
    for($k=0;$k< mysql_num_rows($result);$k++)
    {
    $msg = mysql_fetch_row($result);
    for($i=0;$i< $numfields;$i++)
    {
    $msg[$i] = str_replace(\\\\"\\\\r\\\\n\\\\",\\\\"&&php2000mysqlreturn&&\\\\",$msg[$i]);
    $msg[$i] = str_replace(\\\\"\\\\n\\\\" ,\\\\"&&php2000mysqlreturn&&\\\\",$msg[$i]);
    fputs($handle,$msg[$i].\\\\"\\\\r\\\\n\\\\");
    }
    fputs($handle,\\\\"------- php2000 dump data program V1.0 for MySQL --------\\\\r\\\\n\\\\");
    }
    fclose($handle);
    echo \\\\"ok\\\\";
    ?>
    c语言编程入门导入的程序如下:用法同上面!
    < ?
    if($table==\\\\"\\\\")exit();
    mysql_connect(\\\\"localhost\\\\",\\\\"name\\\\",\\\\"password\\\\");
    mysql_select_db(\\\\"database\\\\");
    $message = file(\\\\"$table.txt\\\\");
    echo $numfields = chop($message[0]);
    for($k=1;$k< count($message);$k+=($numfields+1))
    {
    $value=\\\\"\\\\";
    for ($i=$k;$i< ($k+$numfields-1);$i++)
    {
    $tmp = str_replace(\\\\"&&php2000mysqlreturn&&\\\\",\\\\"\\\\r\\\\n\\\\",chop($message[$i]));
    $value .= \\\\"\\\\'\\\\".addslashes($tmp).\\\\"\\\\',\\\\";
    }
    $tmp = str_replace(\\\\"&&php2000mysqlreturn&&\\\\",\\\\"\\\\r\\\\n\\\\",chop($message[$k+$numfields-1]));
    $value .= \\\\"\\\\'\\\\".$tmp.\\\\"\\\\'\\\\";
    $query = \\\\"insert into $table values (\\\\".$value.\\\\")\\\\";
    echo mysql_error();
    mysql_query($query);
    echo $k.\\\\" \\\\";
    }
    echo \\\\"ok\\\\";
    ?>
    使用方法和可能的问题!
    1 导入时 file()函数可能会有问题(我的10M的数据没出现问题),可以改为 fopen()然后没次读一行!!
    2 导入,导出都需要用 ftp 操作,也就是导出后,用 ftp 把数据转到本机,导入时先用ftp转移数据到服务器!

    看完小编的文章是不是很精彩,更多关于视频教程的文章尽在课课家,希望你们多多关注。


     

课课家教育

未登录

1