简体   繁体   中英

Laravel maatwebsite excel package import 2000+ rows results in 1390 code error

I have 4 excel files that contains 1000 rows in every file. I merged it and make it 4000 so that I can save some time. But if I import the merged file it returns me an error of General error: 1390 Prepared statement contains too many placeholders . But when I insert them ony by one it works. I dont know why it return such error, they have even the same values in every column. Can someone tell me what to do with this error? Help would be appriciated. Thanks a lot

Im using laravel maatwebsite excel package.

My import code

public function import(Request $request)
    {
        if($request->hasFile('template')){
            $path = $request->file('template')->getRealPath();
            $data = \Excel::load($path)->get();

            if($data->count() > 0){
                $rows = $data->toArray();

                foreach ($rows as $row) {

                    $level = '';
                    $stack = '';
                    $unit = '';
                    $gunit = '';


                    $street = '';
                    $block_unit = '';

                   //DONT MIND THIS FUNCTION HERE
                    if (strpos($row['address'], '#') !== false) {
                        $unit = explode("#",$row['address']);
                        $gunit = $unit[1];
                        $block = explode(" ",$unit[0],2);
                        if(isset($unit[1])) {
                            $x = explode("-",$unit[1]);
                            $level = $x[0];
                            $stack = $x[1];    
                            $street = $block[1];
                            $block_unit= $block[0];                     
                        }
                    }
                    elseif(strpos($row['address'], ' ') !== false){
                        $unit = explode(" ",$row['address']);
                        $block = explode(" ",$unit[0],2);
                        if(isset($unit[1])) {
                            $x = explode("-",$unit[1]);
                            $level = '';
                            $stack = '';
                            $x = preg_replace('/[0-9]+/', '', $row['address']);
                            $street = $x.substr($street,1);
                            $block_unit= $block[0];      
                        }
                    }
                    else{
                        $level = '';
                        $stack = '';
                        $unit = '';
                        $gunit = '';
                        $block_unit = '';
                        $street = '';
                    }
                    //END

                    $inserts[]=[
                        'transtype' => 'RESI',
                        'project_name' => $row['project_name'],
                        'unitname' => $gunit,
                        'block' => $block_unit,
                        'street' => $street,
                        'level' => $level,
                        'stack' => $stack,
                        'no_of_units' => $row['no._of_units'],
                        'area' => $row['area_sqm'],
                        'type_of_area' => $row['type_of_area'],
                        'transacted_price' => $row['transacted_price'],
                        'nettprice' => $row['nett_price'],
                        'unitprice_psm' => $row['unit_price_psm'],
                        'unitprice_psf' => $row['unit_price_psf'],
                        'sale_date' => $row['sale_date'],
                        'contract_date' => $row['sale_date'],
                        'property_type' => $row['property_type'],
                        'tenure' => $row['tenure'],
                        'completion_date' => $row['completion_date'],
                        'type_of_sale' => $row['type_of_sale'],
                        'purchaser_address_indicator' => $row['purchaser_address_indicator'],
                        'postal_district' => $row['postal_district'],
                        'postal_sector' => $row['postal_sector'],
                        'postal_code' => $row['postal_code'],
                        'planning_region' => $row['planning_region'],
                        'planning_area' => $row['planning_area'],
                    ];
                }


            }

            if(empty($inserts)){
                dd('Request data does not have any files to import.');  
            }
            else {
                \DB::table('xp_pn_ura_transactions')->insert($inserts);
                dd('record inserted');  
            }

        }
    }

You can not insert more than 1000 records using laravel insert() method. If you want to achieve expected output then you can use array_chunk function of php or collection of laravel. For example using array_chunk :

$chuncked = array_chunk($inserts, 1000);

foreach($chuncked as $insert){
   \DB::table('xp_pn_ura_transactions')->insert($insert);
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM