• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • 使用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

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>