Есть csv файл объемом 300мб. В нем 200 000 строк вида:
текст текст; "текст в двойных кавычках; текст в двойных кавычках; текст в двойных кавычках"; текст; текст
текст текст; "текст в двойных кавычках; текст в двойных кавычках; текст в двойных кавычках"; текст; текст; текст; текст
текст текст; текст; текст; "текст в двойных кавычках;текст в двойных кавычках; текст в двойных кавычках"; текст; текст
Разделитель ; , но так как внутри ячеек так же встречается ; приходится делать замену с помощью регулярки, решение нашел здесь:
373729
Далее, для обработки файла использую следующий код:
$handle = fopen($file_save . $name_csv, "r");
$data_import = array();
if(empty($handle) === false) {
while(($data = fgetcsv($handle, 0, ";")) !== FALSE) {
array_push($data_import, $data);
}
fclose($handle);
}
проблема в том, что скрипт забирает себе 1гб оперативы. Вопрос, может я упускаю какой то более правильный способ парсинга csv файла такого объема? Регулярка и сам парсинг разнесены отдельно и количество потребляемой памяти на разбор файла указан без работы по замене разделителя.