Как записать данные из csv файла в базу данных?
имеется csv файл, в котором более 40000 строк, нужно построчно в базу записать все эти данные. Пробовал и так и сяк, голову сломал, не хватает памяти. Последний рабочий вариант выглядит вот так, дальше переменная перебирается и записывается, не знаю, как улучшить скрипт. На маленьких файлах работает отлично, казалось бы. Может есть способ порционно брать данные и записывать?
<?php
header('Content-type: text/html; charset=utf-8');
ini_set("max_execution_time", 0);
$file = $_POST['file'];
$csv_lines = file("2019-10-09_rivegauche.csv");
if(is_array($csv_lines))
{
$cnt = count($csv_lines);
for($i = 0; $i < $cnt; $i++)
{
$line = $csv_lines[$i];
$line = trim($line);
$first_char = true;
$col_num = 0;
$length = strlen($line);
for($b = 0; $b < $length; $b++)
{
if($skip_char != true)
{
$process = true;
if($first_char == true)
{
if($line[$b] == '"')
{
$terminator = '";';
$process = false;
}
else
$terminator = ';';
$first_char = false;
}
if($line[$b] == '"')
{
$next_char = $line[$b + 1];
if($next_char == '"')
$skip_char = true;
elseif($next_char == ';')
{
if($terminator == '";')
{
$first_char = true;
$process = false;
$skip_char = true;
}
}
}
if($process == true)
{
if($line[$b] == ';')
{
if($terminator == ';')
{
$first_char = true;
$process = false;
}
}
}
if($process == true)
$column .= $line[$b];
if($b == ($length - 1))
{
$first_char = true;
}
if($first_char == true)
{
$values[$i][$col_num] = $column;
$column = '';
$col_num++;
}
}
else
$skip_char = false;
}
}
}
print_r($values);
?>