Tutorial: Import a CSV File Using PHP and MySQL

Sesuai pengalaman pribadi yang waktu itu butuh sebuah script yang mudah untuk mengimport  CSV atau comma delimited file ke mysql database.  Langsung aja yah ini ada contoh untuk menambah data contacts ke dalam contacts table dari uploaded CSV file, dengan 3 buah fields: (contact_first, contact_last, contact_email).

file pertama adalah file php, misal saya beri nama import.php. yang berisi :

<?php

//connect to the database
$connect = mysql_connect(“localhost”,”username”,”password”);
mysql_select_db(“mydatabase”,$connect); //select the table
//

if ($_FILES[csv][size] > 0) {

//get the csv file
$file = $_FILES[csv][tmp_name];
$handle = fopen($file,”r”);

//loop through the csv file and insert into database
do {
if ($data[0]) {
mysql_query(“INSERT INTO contacts (contact_first, contact_last, contact_email) VALUES
(
‘”.addslashes($data[0]).”‘,
‘”.addslashes($data[1]).”‘,
‘”.addslashes($data[2]).”‘
)
“);
}
} while ($data = fgetcsv($handle,1000,”,”,”‘”));
//

//redirect
header(‘Location: import.php?success=1’); die;

}

?>

<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”>
<html xmlns=”http://www.w3.org/1999/xhtml”>
<head>
<meta http-equiv=”Content-Type” content=”text/html; charset=iso-8859-1″ />
<title>Import a CSV File with PHP & MySQL</title>
</head>

<body>

<?php if (!empty($_GET[success])) { echo “<b>Your file has been imported.</b><br><br>”; } //generic success notice ?>

<form action=”” method=”post” enctype=”multipart/form-data” name=”form1″ id=”form1″>
Choose your file: <br />
<input name=”csv” type=”file” id=”csv” />
<input type=”submit” name=”Submit” value=”Submit” />
</form>

</body>
</html>

 

kemudian file yang kedua adalah contoh file csv yang akan di insert kan. misal file contacts.csv yang isisnya :

Jim,Smith,jim@tester.com
Joe,Tester,joe@tester.com
kemudian design tabel yang digunakan adalah sebagai berikut :
SET FOREIGN_KEY_CHECKS=0;
DROP TABLE IF EXISTS `contacts`;
CREATE TABLE `contacts` (
  `contact_id` int(11) NOT NULL auto_increment,
  `contact_first` varchar(255) character set latin1 default NULL,
  `contact_last` varchar(255) character set latin1 default NULL,
  `contact_email` varchar(255) character set latin1 default NULL,
  PRIMARY KEY  (`contact_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

semoga contoh ini bisa membantu bagi programmer yang membutuhkan..