将大型Excel数据上传到数据库中,而无需从PHP循环

时间:2019-07-08 05:43:00

标签: php codeigniter-3

我有一个 .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 :(得分:0)

您正在使用PHPExcel的 rangeToarray()来获取每一行。 该范围不仅可以用于单行,而且可以用于多行。

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

意思相同

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

=>

A1:J50

答案 1 :(得分:0)

不是在循环中执行查询,而是使用循环构建Insert语句,并在循环完成后执行。一次执行查询。 这样,而不是执行100/200 / n个查询,所有插入将在一个查询中发生,因此性能会更好。