Cara import file csv ke mysql dengan php

Pada artikel kali ini, saya akan membagikan cara import file CSV ke database MySQL. CSV adalah singkatan dari Comma Separated Values ​​yang jika diterjemahkan ke dalam bahasa Inggris artinya Banyak data dipisahkan dengan koma. Lebih spesifik lagi, CSV adalah format file yang berisi banyak sekali data dimana setiap field data dipisahkan dengan tanda koma (,) atau titik koma (;) dan setiap baris data dipisahkan dengan tanda enter.

Format file CSV adalah file teks, yang berarti kita dapat membuka file CSV melalui editor teks. File CSV ini dapat dibuat secara manual dengan text editor atau dari file hasil export aplikasi pengolah data seperti Microsoft Excel atau Libre Office Spreadsheet


File CSV sangat berguna ketika kita akan memasukkan data secara massal ke dalam database seperti MySQL. Langkah ini dilakukan ketika penginputan data secara manual satu per satu sudah tidak memungkinkan lagi karena banyaknya data

Agar data di file CSV bisa masuk ke database MySQL, kita harus melakukan proses yang disebut impor data. Proses ini bisa dilakukan langsung di aplikasi PhpMyAdmin atau kita bisa membuat script PHP sendiri untuk menangani proses upload file CSV, preview dan validasi data hingga akhirnya proses import data selesai

Contoh proses import data dari CSV ke MySQL dengan PHP

1. Buat tabel karyawan dengan struktur bidang berikut

  • nama, varchar(50)
  • alamat, varchar(100)
  • tanggal
  • bagian, varchar(50)

2. Buat file upload CSV berikut dan simpan, misalnya dengan nama import. csv. php

 <!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 File CSV</title>
</head>

<body>
<h1>Import File CSV</h1>
<form action="preview.import.php" method="post" enctype="multipart/form-data" name="form1" id="form1">
Pilih File CSV yang akan di import: <br />
<input name="csv" type="file" id="csv"/>
<input type="submit" name="Import" value="Enter" />
</form>
<br/>
<b>Note :</b><br/>
<font color=red>Pastikan urutan kolom pada file CSV= nama,alamat,tanggal lahir,pekerjaan</font><br/>
<font color=red>Pastikan tidak ada nama kolom pada baris atas</font><br/>
</body>
</html>

3. Buat file pratinjau sebelum dimasukkan ke dalam database seperti berikut dan kemudian simpan sesuai nama pada formulir tindakan di atas, yaitu pratinjau. impor. php

 <!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>Preview File CSV</title>
</head>

<body>
<h1>Preview File CSV</h1>
<?php
if(isset($_POST['Import']))
{
if ($_FILES['csv']['size'] > 0) {

$file = $_FILES['csv']['tmp_name'];
$handle = fopen($file,"r");
$data = fgetcsv($handle,1000,",","'");
$step=1;
?>
<form action="insert.sql.php" method="post" enctype="multipart/form-data" name="form1" id="form1">
<?php
echo "
<table border=0>
<tr>
<th>No</th>
<th>Nama</th>
<th>Alamat</th>
<th>Tanggal Lahir</th>
<th>Bagian</th>
</tr>";
do {
if (count($data)==4) {
if($data[3])
{
echo "<tr>";
echo "<td align=center>".$step."</td>";
echo "<td><input type='text' name='nama".$step."' value='".$data[0]."'/></td>";
echo "<td><input type='text' name='alamat".$step."' value='".$data[1]."'/></td>";
echo "<td><input type='text' name='tanggal".$step."' value='".$data[2]."'/></td>";
echo "<td><input type='text' name='bagian".$step."' value='".$data[3]."'/></td>";
echo "</tr>";
$step++;}
}
else echo "ERROR! jumlah field tidak sesuai<br/>";
} while ($data = fgetcsv($handle,1000,",","'"));
}
}
echo "<tr>";
echo "<td colspan=5 align=right><font color=blue>JUMLAH DATA = </font><input type='text' name='count' value='".($step-1)."'/></td>";
echo "</tr>";
?>
<tr>
<td colspan=4><b><font color=red>PASTIKAN DATA SUDAH BENAR BARU TEKAN ENTER =></font></b></td>
<td><input type='submit' name='enter' value='Enter'/></td>
</tr>
</table>
</form>
</body>
</html>
_

4. Buat file untuk memasukkan data ke dalam MySQL dan simpan sesuai nama action form dari file preview diatas yaitu insert. sql. php

 <!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>Insert Data</title>
</head>

<body>
<h1>Insert Data</h1>
<?php
$host = "localhost";
$user = "nama user";
$pass = "password";
$dbnm = "nama database";

$conn = mysql_connect ($host, $user, $pass);
if ($conn) {
$buka = mysql_select_db ($dbnm);
if (!$buka) {
die ("Database tidak dapat dibuka");
}
} else {
die ("Server MySQL tidak terhubung");
}

$error=0;
if(isset($_POST['enter']))
{
$count=$_POST['count']+1;
for($j=1;$j<$count;$j++)
{
$input_nama = "nama".$j;
$nama = addslashes (strip_tags ($_POST[$input_nama]));
$input_alamat = "alamat".$j;
$alamat = addslashes (strip_tags ($_POST[$input_alamat]));
$input_tanggal = "tanggal".$j;
$tanggal = addslashes (strip_tags ($_POST[$input_tanggal]));
$input_bagian = "bagian".$j;
$bagian = addslashes (strip_tags ($_POST[$input_bagian]));
$q="INSERT INTO karyawan (nama,alamat,tanggal,bagian) VALUES ('$nama','$alamat','$tanggal','$bagian')";
$r=mysql_query($q);
if(!$r){$error++;}
}
if($error) { echo "STATUS : IMPORT DATA ERROR";}
else echo "STATUS : IMPORT DATA BERHASIL";
}
?>
</body>
</html>

5. Buat file CSV untuk demo masukkan data dengan isi seperti ini kemudian simpan dengan nama misal karyawan. csv .

agus,kudus,1982-12-28,produksi
tina,jepara,1981-02-13,gudang
evie,bandung,1978-08-04,kantor

6. Setelah semuanya selesai, silahkan buka file import tersebut. csv di browser, lalu upload file CSV yang akan di import lalu klik enter
7. Jika benar maka akan muncul preview file CSV berupa beberapa input teks
8. Untuk melanjutkan ke proses insert data ke tabel MySQL, silahkan klik enter pada halaman preview file
9. Jika proses import data berhasil, akan muncul pesan “STATUS. IMPOR DATA BERHASIL”
10. Sebelumnya silahkan sesuaikan konfigurasi pada koneksi database, sesuaikan dengan settingan masing-masing

Baca Juga. Cara Menggunakan Input Jenis File di PHP