Laravel mengimport file csv data besar dalam contoh database mysql, Dalam tutorial ini Anda akan belajar cara mengimpor catatan file CSV yang besar dan besar dalam aplikasi laravel menggunakan seeder database.
Sering kali kami memiliki ribuan atau jutaan catatan atau file CSV dan kami ingin menyimpan catatan tersebut di database kami sehingga kami menggunakan pekerjaan cron atau antrian untuk itu. Tetapi jika kita ingin mengimpor file CSV hanya satu kali maka kita menggunakan seeder database untuk mengimpor record ke database.
Waktu maksimum ketika kami menggunakan fungsi impor untuk menyimpan data besar, menunjukkan waktu eksekusi yang maksimal, karena file besar dan aplikasi tidak dapat menangani permintaan maksimum satu kali. Jadi di sini kami telah menambahkan kode contoh brilian untuk menyisipkan baris besar file csv dalam database hanya dalam 2-3 detik dengan aplikasi php laravel.
Daftar Isi
Langkah 1: Instal Aplikasi Laravel
Pertama buat aplikasi laravel baru dengan menambahkan perintah berikut di terminal.
composer create-project --prefer-dist laravel/laravel laravel-app
Masuk ke aplikasi
cd laravel-app
Langkah 2: Hubungkan Aplikasi ke Database
Buka file .env dan tambahkan kredensial basis data Anda seperti nama basis data, nama pengguna, kata sandi yang sama pentingnya:
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=db name
DB_USERNAME=db user name
DB_PASSWORD=db password
Langkah 3: Buat Migrasi dan Model
Langkah selanjutnya, kita perlu menjalankan perintah berikut di terminal untuk menghasilkan model, file migrasi menggunakan perintah berikut:
php artisan make:model Community -m
Tambahkan kode di database/migrations/create_communities_table.php:
public function up()
{
Schema::create('communities', function (Blueprint $table) {
$table->bigIncrements('id');
$table->string('state');
$table->string('community');
$table->string('district');
$table->timestamps();
});
}
Selanjutnya, buka command prompt dan jalankan perintah berikut untuk membuat tabel ke dalam database:
php artisan migrate
Tempatkan kode di bawah ini di file app/Models/Community.php:
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Community extends Model
{
use HasFactory;
protected $guarded = [];
}
Langkah 4: Buat Seeder
Pertama, Anda perlu menjalankan perintah berikut untuk menghasilkan file seeder untuk mengunggah file csv besar besar di database hanya dalam hitungan detik.
php artisan make:seeder CommunitySeeder
Langkah 5: Perbarui Kode di Seeder
Sekarang perbarui kode untuk mengimpor garis besar csv baik di laravel atau aplikasi php. Buka file database\seeders\CommunitySeeder.php Anda dan letakkan kode di bawah ini di atasnya;
<?php
namespace Database\Seeders;
use Illuminate\Database\Seeder;
use App\Models\LocalCommunity;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\LazyCollection;
class CommunitySeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
DB::disableQueryLog();
DB::table('local_communities')->truncate();
LazyCollection::make(function () {
$handle = fopen(public_path("comunities.csv"), 'r');
while (($line = fgetcsv($handle, 4096)) !== false) {
$dataString = implode(", ", $line);
$row = explode(';', $dataString);
yield $row;
}
fclose($handle);
})
->skip(1)
->chunk(1000)
->each(function (LazyCollection $chunk) {
$records = $chunk->map(function ($row) {
return [
"state" => $row[0],
"community" => $row[1],
"district" => $row[2]
];
})->toArray();
DB::table('communities')->insert($records);
});
}
}
Langkah 6: Jalankan Seeder dan Uji
Sekarang, jalankan aplikasi Anda menggunakan perintah berikut;
php artisan serve
Selanjutnya, jalankan seeder menggunakan perintah di bawah ini;
php artisan db:seed --class=CommunitySeeder
Sekarang periksa database Anda, ini menunjukkan semua catatan file csv.
example import large csv file laravel laravel 9 laravel