#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, потому что у каждого файла есть имя и дата ‘ ‘