使用PHP將大文件導入到數據庫中

發表于:2013-10-18來源:IT博客大學習作者:Jessica點擊數: 標簽:php
朋友需要將一個有170w行的txt文件.按行把數據導入到數據庫中.. 所以我幫他寫了一下 馬克在這里 萬一也有人用的著:)

  朋友需要將一個有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’);

原文轉自:http://blogread.cn/it/article/1825

国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97