'no_anggota', 'nama' => 'nama', 'no_kp' => 'noic', 'telefon' => 'no_tel', ]; $chunk = []; $chunkSize = 1000; $totalRows = 0; $bar = $this->output->createProgressBar(); $bar->start(); try { while (($row = fgetcsv($handle)) !== false) { $csvData = array_combine($header, $row); $data = []; foreach ($columnMap as $csvCol => $dbCol) { $data[$dbCol] = $csvData[$csvCol] ?? null; } $data['status'] = 1; $chunk[] = $data; if (count($chunk) >= $chunkSize) { DB::table('anggota')->insertOrIgnore($chunk); $totalRows += count($chunk); $chunk = []; $bar->advance($chunkSize); } } if (!empty($chunk)) { DB::table('anggota')->insertOrIgnore($chunk); $totalRows += count($chunk); } $bar->finish(); $this->info("\n✅ Successfully imported {$totalRows} rows"); } catch (\Exception $e) { $this->error("\n❌ Error: " . $e->getMessage()); } fclose($handle); } }