Импорт CSV в таблицу mysql и добавление даты в каждую строку с использованием времени выполнения PHP

#php #mysql #csv #pdo #import-from-csv

#php #mysql #csv #pdo #импорт из csv

Вопрос:

Я создал php-код, который выполняет всю работу по поиску файлов CSV в заданном каталоге и импорту каждого файла csv в нужную таблицу. Проблема в том, что у меня есть файл csv, который содержит 1 МЛН строк! Да, 1 м строк:/ Поэтому для его импорта требуется более 15 минут. Это ПРОБЛЕМА. Как я могу улучшить время выполнения?

 $csv = new SplFileObject($file, 'r');
$csv->setFlags(SplFileObject::READ_CSV);

// get columns name
$tableColumns = $db->getColumns('daily_transaction');
print_r($tableColumns);

// get line fro csv file  without the first one
foreach(new LimitIterator($csv, 1) as $line){
    $i = 0;
    $data = array();

    foreach ($tableColumns as $Columns) {

        //  print($line[$i]."<br>");
        $data[$Columns] = $line[$i];
        $i  ;
    }
    $data['file_name'] = $infoNAME;
    $data['file_date'] = $file_date;

    $insert_id = $db->arrayToInsert('daily_transaction', $data);
}
}
 

Комментарии:

1. если у вас есть доступ к telnet / SSH, вы можете разделить большой файл с помощью команды split split -l 1000 filename.csv new , вы также можете сделать это с помощью shell_exec функции

2. dev.mysql.com/doc/refman/5.7/en/load-data.html <предназначен для скорости

3. @nogad Да, я знаю, но загрузка данных не даст мне возможности и file_date и file_name для каждого файла csv, потому что у каждого файла есть имя и дата ‘ ‘