я загружаю файл CSV через PHP и вставляю во временную таблицу, это то, что мой загрузочный скрипт PHP и запрос MySQL.
$i=0;
while (($data = fgetcsv($source, 1000, ",")) !== FALSE)
{
if($i!=0) {
$column1=$data[0];
$column2=$data[1];
$column3=$data[2];
$column4=$data[3];
$column5=$data[4];
$column6=$data[5];
$query= "INSERT INTO temp_table(column1,column2,column3,column4,column5,column6,load_datetime)
VALUES (nullif('$column1',''), nullif('$column2',''), nullif('$column3',''), nullif('$column4',''), nullif('$column5',''), nullif('$column6',''),now())";
mysql_query($query) or die(mysql_error());
}
$i++;
}
и мой файл CSV имеет 25000 записей, это пример строки из моего CSV
column1,column2,column3,column4,column5,column6
,,,13:57:18,,23:00:19
проблема, с которой я сталкиваюсь, заключается в том, что загрузка CSV занимает более 10 минут, а между ними страница становится пустой. Мои настройки PHP: upload_max_filesize: 100M post_max_size:100M max_execution_time:1000 max_input_time:1000.
это моя деталь таблицы
CREATE TABLE temp_table (
id int(11) NOT NULL,
column1 time DEFAULT NULL,
column2 time DEFAULT NULL,
column3 time DEFAULT NULL,
column4 time DEFAULT NULL,
column5 time DEFAULT NULL,
column6 time DEFAULT NULL,
load_datetime datetime DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
и когда я проверяю temp_table, он вставляет около 8000 записей. пожалуйста, помогите мне с подходом, чтобы вставить быстрее.