This content originally appeared on DEV Community and was authored by MedanInCode
Cara Upload Banyak Data Sekaligus Dengan Laravel.Pada tutorial kali ini kita akan membandingkan dua cara pertama menggunakan fungsi mysql LOAD DATA LOCAL dan yang kedua package composer league/csv.Cara pertama adalah yang paling cepat ,yang ada saat ini untuk import csv ukuran besar.
Tetapi terkadang hosting tidak support untuk cara pertama,terutama yang bersifat shared hosting dengan alasan keamanan ucap support hosting.Jadi karena kemaren team medanincode juga terkena kendala kita cari alternatif lain yang sudah dicoba dan lumayan cepat ,menggunakan package league/csv.
Disini kita juga akan membandingkan kecepatan keduanya.Untuk membandingkan kita punya file csv dengan format seperti dibawah ini ,dengan jumlah data 100.000 baris.Kita akan mengukur kecepatan insert dengan menggunakan LOAD DATA LOCAL dan package league/csv.
LOAD DATA LOCAL INFILE
Untuk mengecheck apakah hosting kita support LOAD DATA LOCAL,bisa tulis query dibawah ini di phpmyadmin atau sejenisnya.
SHOW GLOBAL VARIABLES LIKE 'local_infile';
Dan pastikan juga settingan di config/database.php bagian connections mysql pada options ada perintah seperti dibawah ini.
<?php
....
'options' => extension_loaded('pdo_mysql') ? array_filter([
PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'),
PDO::MYSQL_ATTR_LOCAL_INFILE => true,
]) : [],
Untuk penggunaannya LOAD DATA LOCAL di laravel seperti code dibawah ini.
<?php
....
public function store_load(Request $request){
$pathname = $request->file('report_file')->getPathName();
$query = '
LOAD DATA LOCAL INFILE "'.$pathname.'"
INTO TABLE persons
FIELDS TERMINATED by \',\'
OPTIONALLY ENCLOSED BY \'"\'
LINES TERMINATED BY \'\n\'
IGNORE 1 LINES
(@col1,@col2,@col3)
set
nama="@col1",umur="@col2",jk="@col3"';
$time_start = microtime(true);
$result = DB::statement($query);
$time_end = microtime(true);
$execution_time = ($time_end - $time_start);
echo '<b>Total Execution Time:</b> '.($execution_time).' seconds';
}
@col1 sampai @col3 adalah jumlah dari kolom yang akan kita ambil dari csv.FIELDS TERMINATED by adalah jenis separator yang digunakan oleh file csv. IGNORE 1 LINES untuk skip baris pertama dari file csv ,karena hanya berisi judul baris.
league/csv
League/csv sendiri adalah salah satu package untuk mengolah csv di php untuk informasi lebih bisa kunjungi di (https://csv.thephpleague.com/).
Untuk instalasinya sama seperti package composer lainnya.
composer require league/csv
Untuk penggunaannya ,pertama tambahkan script dibawah di bagian atas.
.....
Untuk versi lengkap tutorial kunjungi https://medanincode.com.
Originally published at https://medanincode.com.
This content originally appeared on DEV Community and was authored by MedanInCode
MedanInCode | Sciencx (2021-09-27T05:31:58+00:00) Cara Upload Banyak Data Sekaligus Dengan Laravel. Retrieved from https://www.scien.cx/2021/09/27/cara-upload-banyak-data-sekaligus-dengan-laravel/
Please log in to upload a file.
There are no updates yet.
Click the Upload button above to add an update.