逐行读取大文件(在mac上生成的csv文件)

时间:2014-03-04 14:32:20

标签: php sql csv utf-8

如何逐行读取php(csv文件)中的大文件以避免内存不足? 目前,我有这个:

Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 72 bytes)

我几乎可以肯定我的php会逐行读取:

$i = 0;
    $source = fopen('falkcsvutf.csv', 'r') or die("Problem open file");
    while (($data = fgetcsv($source, 0, ";")) !== FALSE && $i < 10)
    {
        echo $data[1];
        $i++;
    }
    fclose($source);

$ i&lt; 10只是在调试中限制......

我感觉PHP的东西在我的csv中只有一行,但是,当我以崇高文本打开文件时,我看到所有行(带行号)

该文件是Excel文件,保存为CSV,然后转换为带有iconv功能的utf8。

任何想法?

1 个答案:

答案 0 :(得分:1)

来自PHP docs

  

注意:如果在Macintosh计算机上读取文件或由Macintosh计算机创建文件时,PHP无法正确识别行结尾,则启用auto_detect_line_endings运行时配置选项可能有助于解决问题。

请检查auto_detect_line_endings

的值