zoukankan      html  css  js  c++  java
  • PHP读取大文本文件并处理数据的思路

    //处理文件
        $file = fopen($filename, "r") or exit("Unable to open file!");
        $total_line = 0;
        while(!feof($file)){
            $f = fgets($file);
            $total_line++; //总行数
        } 
        
        $for_count = intval($total_line / 1000);
        $txt=file($filename);
      //$txt[0] 表示第一行, $txt[1] 表示第二行, ...
    for($m=0;$m<=$for_count;$m++){ $start = $m * 1000; $end = $start + 1000; if($end > $total_line){ $end = $total_line; } //echo $start.'---'.$end." "; $sql_value = ''; for($i=$start;$i<$end;$i++){ if($txt[$i]){ $data = explode(",", $txt[$i]); $data[2] = "'".$data[2]."'"; $data[28] = "'".str_replace(" ", "", $data[28])."'"; //转换得到sql语句的值 $sql_value .= "(".implode(",", $data)."),"; unset($data); } } $sql_value = substr($sql_value, 0, -1); $add_sql = "insert into tbname ({$fields}) values ".$sql_value; $add_res = mysqli_query($conn,$add_sql); if ($add_res) { echo 'OK'; }else{ echo 'Error'; file_put_contents($file_err_name.$m, $add_sql); } }

    【附】不分条一次性处理整个文本:

     1 //处理文件
     2     $file = fopen($filename, "r") or exit("Unable to open file!");
     3     $sql_value = '';
     4     
     5     while(!feof($file)){
     6         $f = fgets($file);
     7         if($f){
     8             $data = explode(",", $f);
     9             $data[2] = "'".$data[2]."'";           
    19             $data[28] = "'".str_replace("
    ", "", $data[28])."'";             
    21             //转换得到sql语句的值
    22             $sql_value .= "(".implode(",", $data)."),";
    23         }
    24         
    25         unset($data);
    26     }
    27     
    28     //添加入库
    29     $sql_value = substr($sql_value, 0, -1);
    30     $add_sql = "insert into tbname ({$fields}) values ".$sql_value;
    31     
    32     $add_res = mysqli_query($conn,$add_sql);
    33     if ($add_res) {
    34         echo 'OK'; 
    35     }else{
    36         echo 'Error';
    37         file_put_contents($file_err_name, $add_sql);
    38     }
    39     unset($sql_value);
    40     
    41     fclose($file);
  • 相关阅读:
    ISO 学习笔记 2015-03-15
    IOS 学习笔记 20150314
    IOS 学习日志 2015-3-13
    Letter Combinations of a Phone Number
    anagrams
    Pow(x, n)
    Distinct Subsequences
    Excel Sheet Column Number
    MIT 三课程
    c++ 重载,覆盖,重定义
  • 原文地址:https://www.cnblogs.com/rxbook/p/6532655.html
Copyright © 2011-2022 走看看