Rabu, 16 April 2014

Import CSV Data File ke MySql dengan PHP

Pertama kita buat dulu tabelnya.

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.



Categories: , , ,

10 komentar:

  1. Maksudnya 1000 record dalam sekali gimana yah?
    Ada ngga query yg bisa mengeksekusi sampai unlimited

    BalasHapus
    Balasan
    1. 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.

      Hapus
  2. mas hendy,
    kalo 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

    BalasHapus
    Balasan
    1. 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

      Hapus
  3. Mau coba dulu deh gmana hasilnya..
    Di kasus saya file csv nya user bisa upload, ada contoh yang lain gk?

    BalasHapus
    Balasan
    1. http://kopiae.blogspot.com/2014/07/import-csv-data-file-ke-mysql-dengan.html

      Hapus
  4. kenapa ya kalau import lebih dari limit tidak bisa apa ada solusi agar bisa lebih dari limit, tanks pencerahannya

    BalasHapus
    Balasan
    1. untuk import data misalkan 50rb data, kita dapat menggunakan .sql file. tapi harus di import langsung ke database tanpa menggunakan php.

      Hapus
  5. kalo mau impor csv ke tabel dengan kondisi tertentu, misalnya record yang mengandung kata xyz di kolom tertentu gimana? Terima Kasih

    BalasHapus
    Balasan
    1. untuk kasus seperti yang agan punya, agan bisa menambahkan kondisi if pada // SQL Query untuk insert data.
      misal :
      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

      Hapus

Subscribe to RSS Feed Follow me on Twitter!