PHP按行讀取、處理較大CSV文件的代碼實(shí)例
對(duì)于數(shù)百萬(wàn)條數(shù)據(jù)量的CSV文件,文件大小可能達(dá)到數(shù)百M(fèi),如果簡(jiǎn)單讀取的話很可能出現(xiàn)超時(shí)或者卡死的現(xiàn)象。
為了成功將CSV文件里的數(shù)據(jù)導(dǎo)入數(shù)據(jù)庫(kù),分批處理是非常必要的。
下面這個(gè)函數(shù)是讀取CSV文件中指定的某幾行數(shù)據(jù):
/**
* csv_get_lines 讀取CSV文件中的某幾行數(shù)據(jù)
* @param $csvfile csv文件路徑
* @param $lines 讀取行數(shù)
* @param $offset 起始行數(shù)
* @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;
}
調(diào)用方法:
$data = csv_get_lines('path/bigfile.csv', 10, 2000000);
print_r($data);
函數(shù)主要采用行定位的思路,通過(guò)跳過(guò)起始行數(shù)來(lái)實(shí)現(xiàn)文件指針定位。
上述函數(shù)對(duì)500M以內(nèi)的文件進(jìn)行過(guò)測(cè)試,運(yùn)行通暢,對(duì)于更大的文件未做測(cè)試,請(qǐng)斟酌使用或加以改進(jìn)。
- php導(dǎo)入csv文件碰到亂碼問(wèn)題的解決方法
- 基于PHP讀取csv文件內(nèi)容的詳解
- php使用fgetcsv讀取csv文件出現(xiàn)亂碼的解決方法
- 詳解PHP導(dǎo)入導(dǎo)出CSV文件
- php將csv文件導(dǎo)入到mysql數(shù)據(jù)庫(kù)的方法
- php對(duì)csv文件的讀取,寫入,輸出下載操作詳解
- php中數(shù)據(jù)的批量導(dǎo)入(csv文件)
- php寫入數(shù)據(jù)到CSV文件的方法
- php fputcsv命令 寫csv文件遇到的小問(wèn)題(多維數(shù)組連接符)
- PHP下載生成的csv文件及問(wèn)題總結(jié)
- PHP實(shí)現(xiàn)CSV文件的導(dǎo)入和導(dǎo)出類
- php實(shí)現(xiàn)的讀取CSV文件函數(shù)示例
相關(guān)文章
PHP加密技術(shù)的簡(jiǎn)單實(shí)現(xiàn)
下面小編就為大家?guī)?lái)一篇PHP加密技術(shù)的簡(jiǎn)單實(shí)現(xiàn)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-09-09對(duì)于ThinkPHP框架早期版本的一個(gè)SQL注入漏洞詳細(xì)分析
這篇文章主要介紹了對(duì)于ThinkPHP框架早期版本的一個(gè)SQL注入漏洞詳細(xì)分析,對(duì)于網(wǎng)站安全十分重要!需要的朋友可以參考下2014-07-07CI框架網(wǎng)頁(yè)緩存簡(jiǎn)單用法分析
這篇文章主要介紹了CI框架網(wǎng)頁(yè)緩存簡(jiǎn)單用法,結(jié)合實(shí)例形式分析了CI框架網(wǎng)頁(yè)緩存的原理,以及開啟緩存、刪除緩存等操作技巧,需要的朋友可以參考下2018-12-12基于Laravel 多個(gè)中間件的執(zhí)行順序詳解
今天小編就為大家分享一篇基于Laravel 多個(gè)中間件的執(zhí)行順序詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-10-10php如何根據(jù)IP獲取當(dāng)前經(jīng)緯度以及地域信息
這篇文章主要給大家介紹了關(guān)于php如何根據(jù)IP獲取當(dāng)前經(jīng)緯度以及地域信息的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2022-01-01PHP中的empty、isset、isnull的區(qū)別與使用實(shí)例
今天小編就為大家分享一篇關(guān)于PHP中的empty、isset、isnull的區(qū)別與使用實(shí)例,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2019-03-03ThinkPHP模板循環(huán)輸出Volist標(biāo)簽用法實(shí)例詳解
這篇文章主要介紹了ThinkPHP模板循環(huán)輸出Volist標(biāo)簽用法,結(jié)合實(shí)例形式詳細(xì)分析了Volist標(biāo)簽的功能,使用方法與相關(guān)注意事項(xiàng),需要的朋友可以參考下2016-03-03