技术头条 - 一个快速在微博传播文章的方式     搜索本站
您现在的位置首页 --> PHP --> 使用PHP将大文件导入到数据库中..

使用PHP将大文件导入到数据库中..

浏览:3606次  出处信息

朋友需要将一个有170w行的txt文件.按行把数据导入到数据库中..

所以我帮他写了一下 马克在这里 万一也有人用的着:)

以下是代码片段:
header ( "Content-type: text/html;charset=utf-8" );
set_time_limit(0);
include(’Database.class.php’);
$db = new Database(’127.0.0.1’, ’root’, ’root’, ’test’); //数据库
$fp = fopen(’171w.txt’, ’r’); //文件
$i=1; //开始行数
$array = array();  //用来存放从XXX-XXX行的数据的数组
//回调函数
function callback($now) {
    global $db, $array, $i, $fp;
    if(empty($array)) {             //为了节省资源..我们只生成一次数组
        while (!feof($fp)) {
           if($i == $now) {         //循环到需要读取的行数时
               for($j=$i;$j<=$i+999;$j++) {         //读取下面的1000行并存储到数组中
                   $array[$j] = stream_get_line($fp, 1000000, "\n");
               }
               break;
           }
           stream_get_line($fp, 1000000, "\n");    //实践证明 stream_get_line 比 fgets 快很多..
           $i++;
        }
    }
    $db->insert("INSERT INTO test(name) VALUES(’{$array[$now]}’)");  //插入到数据库中
}
include(’SkiyoProcess.class.php’);
$sp = new SkiyoProcess(2, 1000, 171000);  //间隔为2秒  每次插入1000条数据 一共171000行数据
$sp->process(’callback’);

需要的库 一起打包下载 没有提供那个文件 太大鸟..

点我下载

建议继续学习:

  1. 高效的大文件拷贝    (阅读:3012)
  2. Linux 找出大文件汇总    (阅读:2985)
  3. c/c++访问超过2G的文件    (阅读:2317)
  4. 误删大文件的一个可能解救办法    (阅读:1492)
  5. centos查找大文件    (阅读:559)
QQ技术交流群:445447336,欢迎加入!
扫一扫订阅我的微信号:IT技术博客大学习
© 2009 - 2024 by blogread.cn 微博:@IT技术博客大学习

京ICP备15002552号-1