Загрузить большие данные Excel в базу данных без циклов из PHP - PullRequest
0 голосов
/ 08 июля 2019

У меня есть файл .xls , который содержит большое количество строк, которые я должен сохранить в БД.Сейчас я читаю каждую строку в цикле и вставляю в таблицу.Есть ли способ, я могу сбросить все строки в таблицу в один выстрел?(без петель?)

for ($row = 2; $row <= $highestRow; $row++) 
{ 

    $rowData = $sheet->rangeToArray('A' . $row . ':' . $highestColumn . $row,NULL,TRUE,FALSE);
    $entityName =$headings[0];
    $entityValue=$rowData[0];

    $rowData[0] = array_combine($headings[0], $rowData[0]);
    $num = count($rowData[0]);                                
    $excelDOB=$rowData[0]['date of birth'];
    $student = array(
                        'name'    =>  $name, 
                    );

    $this->common_model->insert_student_data($student);

}

Ответы [ 2 ]

0 голосов
/ 08 июля 2019

Вместо выполнения запроса в цикле, вы строите операторы вставки, используя циклы, и после завершения цикла.Выполните запрос один раз.Таким образом, вместо выполнения 100/200 / n запросов все вставки будут выполняться в одном запросе, производительность будет лучше.

0 голосов
/ 08 июля 2019

Вы используете PHPExcel rangeToarray () , чтобы получить каждую строку. Диапазон может использоваться не только одной строкой, но и несколькими строками.

$rowData = $sheet->rangeToArray('A1' . ':' . $highestColumn . $highestRow,NULL,TRUE,FALSE);

Это означает то же самое

A1:J1
A2:J2
.
.
.
A1:J50

=>

A1:J50
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...