Belajar Online 31 Cara murah dan mudah dalam belajar

22 Juni 2009

Belajar Online Load Data Infile MYSQL

Ternyata Script Import data CSV ke MySQl agak sulit dilakukan jika data yang dimasukkan lebih dari 10000 record. Kemarin ketika aku coba buat masukin data 50000 record scriptnya error karena melebihi batas waktu dan hanya sebagian data yg masuk. Aku lihat lagi scriptnya, mungkin karena inputnya memakai sistem pengulangan sehingga ketika recordnya banyak maka script error karena harus melakukan pengulangan yang banyak. Aku coba langsung pakai phpmyadmin, bisa walaupun recordnya banyak. ternyata phpmyadmin memakai sistem Load data infile untuk import data csv ke Mysql. Sistem Load data infile tidak menggunakan system while sehingga meskipun datanya banyak tidak akan error. Setelah utak atik tag Load data infile karena kalau pakai PHP tulisannya tidak sama ketika langsung pakai MYSQL. Ini contoh scriptnya :

=====================================================================
<?php

$conn = mysql_connect('localhost','root');
mysql_select_db('job',$conn);
if(isset($_POST['submit']))
{
$target_path = "D:/apache/htdocs/mon-sopp/intagjastel/data/";

$target_path = $target_path . basename( $_FILES['filename']['name']);

if(move_uploaded_file($_FILES['filename']['tmp_name'], $target_path)) {
echo "<font face=arial size=2>The file ". basename( $_FILES['filename']['name']). " berhasil di upload</font><br>";
} else{
echo "<font face=arial size=2>upload data gagal, silahkan ulangi lagi</font><br>";
}

$filename=$target_path;
$load=mysql_query("LOAD DATA INFILE '$filename' INTO TABLE intagjastel FIELDS TERMINATED BY ',' LINES TERMINATED BY '\r\n' ") or die(mysql_error());
if ($load){
echo("Order data berhasil");
} else {
echo("
Order data Gagal");
}
}
?>
===================================================================

Akhirnya setelah pakai sistem Load data infile, masukkan data lebih dari 50000 record tidak ada masalah.

Penting: untuk data CSV nya. Tanda " , . harus dihilangkan, karena kalau tidak maka kata setelah tanda itu akan dimasukkan ke kolom selanjutnya

1 komentar:

Anonim mengatakan...

esgetedeyege(gmail) :
kl file teks-nya tdk dlm satu lokasi/server/localhost bisa ditambahi "LOCAL".
jd "LOAD DATA LOCAL INFILE ...dst"
krn defaultnya : file teks akan dicari di path mysql(server).
lebih jelasnya di http://kb.masterweb.net/beta/index.cgi/read/Pesan_kesalahan_saat_LOAD_DATA_INFILE