Import CSV Data File ke MySql dengan PHP
CREATE TABLE `data_pribadi` (
`no` int NULL AUTO_INCREMENT ,
`nama` varchar(40) NULL ,
`alamat` varchar(50) NULL ,
PRIMARY KEY (`no`)
)
;
Dari struktur tabel diatas maka isi file csv kita sebagai berikut. Data paling atas tidak akan tersimpan ke database.
no,nama,alamat
1,Aan Setiawan,Surabaya
2,Andi Prasetyo,Surabaya
3,Beni,Surabaya
kemudian buat script berikut:
<?php
//koneksi database
$connect = mysql_connect('localhost','root','');
if (!$connect) {
die('Could not connect to MySQL: ' . mysql_error());
}
//nama database
$cid =mysql_select_db('databaseku',$connect);
//tempat file csv berada
define('CSV_PATH','C:/wamp/www/folderku/');
// nama file csv
$csv_file = CSV_PATH . "test.csv";
if (($getfile = fopen($csv_file, "r")) !== FALSE) {
$data = fgetcsv($getfile, 1000, ",");
while (($data = fgetcsv($getfile, 1000, ",")) !== FALSE) {
$num = count($data);
for ($c=0; $c < $num; $c++) {
$result = $data;
$str = implode(",", $result);
$slice = explode(",", $str);
$col1 = $slice[0];
$col2 = $slice[1];
$col3 = $slice[2];
// SQL Query untuk insert data
$query = "INSERT INTO data_pribadi(no,nama,alamat)
VALUES('".$col1."','".$col2."','".$col3."')";
$s=mysql_query($query, $connect );
}
}
}
echo "file csv berhasil di import ke database!!";
mysql_close($connect);
?>
Dari script diatas bisa mengeksekusi sampai 1000 record dalam sekali.
Maksudnya 1000 record dalam sekali gimana yah?
BalasHapusAda ngga query yg bisa mengeksekusi sampai unlimited
misalnya 1 tabel 10-15 kolom dan setting php max_execution_time masih default (30s) kira2 bisa hanya mengeksekusi sampai 1000 record karena terbatas waktu eksekusinya.
Hapusmas hendy,
BalasHapuskalo file-nya disimpan buka difolder C:/wamp/www/folderku/
tetapi disimpan di PC user gimana koding-nya
terima kasih buat artikel dan jawaban-nya
salam,
solikin
terima kasih atas kunjungannya, untuk menjawab pertanyaan diatas sudah saya posting di http://kopiae.blogspot.com/2014/07/import-csv-data-file-ke-mysql-dengan.html semoga bermanfaat. maaf bila ada kekurangan
HapusMau coba dulu deh gmana hasilnya..
BalasHapusDi kasus saya file csv nya user bisa upload, ada contoh yang lain gk?
http://kopiae.blogspot.com/2014/07/import-csv-data-file-ke-mysql-dengan.html
Hapuskenapa ya kalau import lebih dari limit tidak bisa apa ada solusi agar bisa lebih dari limit, tanks pencerahannya
BalasHapusuntuk import data misalkan 50rb data, kita dapat menggunakan .sql file. tapi harus di import langsung ke database tanpa menggunakan php.
Hapuskalo mau impor csv ke tabel dengan kondisi tertentu, misalnya record yang mengandung kata xyz di kolom tertentu gimana? Terima Kasih
BalasHapusuntuk kasus seperti yang agan punya, agan bisa menambahkan kondisi if pada // SQL Query untuk insert data.
Hapusmisal :
if(strpos($col3,'xyz') !== false)
{
$query = "INSERT INTO data_pribadi(no,nama,alamat)
VALUES('".$col1."','".$col2."','".$col3."')";
$s=mysql_query($query, $connect );
}
penjelasan : apabila pada col3 ada kata xyz maka akan di import datanya.
mohon maaf bila belum sesuai dengan permintaan agan. terima kasih