国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > PHP > 正文

PHP按行讀取、處理較大CSV文件的代碼實例

2024-05-04 23:22:46
字體:
來源:轉載
供稿:網友

對于數百萬條數據量的CSV文件,文件大小可能達到數百M,如果簡單讀取的話很可能出現超時或者卡死的現象。

為了成功將CSV文件里的數據導入數據庫,分批處理是非常必要的。

下面這個函數是讀取CSV文件中指定的某幾行數據:

復制代碼 代碼如下:


/**
 * csv_get_lines 讀取CSV文件中的某幾行數據
 * @param $csvfile csv文件路徑
 * @param $lines 讀取行數
 * @param $offset 起始行數
 * @return array
 * */
function csv_get_lines($csvfile, $lines, $offset = 0) {
    if(!$fp = fopen($csvfile, 'r')) {
     return false;
    }
    $i = $j = 0;
 while (false !== ($line = fgets($fp))) {
  if($i++ < $offset) {
   continue;
  }
  break;
 }
 $data = array();
 while(($j++ < $lines) && !feof($fp)) {
  $data[] = fgetcsv($fp);
 }
 fclose($fp);
    return $data;
}


調用方法:

復制代碼 代碼如下:


$data = csv_get_lines('path/bigfile.csv', 10, 2000000);
print_r($data);

函數主要采用行定位的思路,通過跳過起始行數來實現文件指針定位。

上述函數對500M以內的文件進行過測試,運行通暢,對于更大的文件未做測試,請斟酌使用或加以改進。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 梁河县| 龙陵县| 胶州市| 沧源| 香格里拉县| 利辛县| 华蓥市| 兴和县| 磐安县| 衢州市| 胶南市| 庆云县| 呼图壁县| 昌图县| 潢川县| 肇源县| 香格里拉县| 绵阳市| 肥城市| 富宁县| 罗山县| 芜湖市| 登封市| 永平县| 葫芦岛市| 上蔡县| 连云港市| 玉环县| 潜江市| 会昌县| 垫江县| 晴隆县| 潞西市| 阿克陶县| 富顺县| 台中县| 贵阳市| 浑源县| 乡宁县| 济南市| 浦东新区|