GORAGOD.com

freelance, web developer, web designer, hosting, domain name

Import CSV to MySQL

ไฟล์ CSV เป็นไฟล์ excel ชนิดหนึ่ง นอกเหนือจาก XLS ที่ใช้การเก็บข้อมูลแบบ Text (สามารถเปิดอ่านได้โดย Notepad) การอ่านข้อมูลจากไฟล์ CSV เลยค่อนข้างง่าย

ไฟล์ CSV มาตรฐาน จะมีรูปแบบดังนี้ครับ
  • เป็นข้อความ (text) 
  • รหัสอักขระตามภาษาท้องถิ่น เช่น ภาษาไทยจะใช้ TIS-620 หรือ Windows-874
  • แยกข้อมูลแต่ละแถวด้วยการขึ้นบรรทัดใหม่
  • แยกข้อมูลแต่ละคอลัมน์ด้วย , (ลูกน้ำ)
  • ข้อมูลจะอยู่ภายในเครื่องหมาย "..." (อัญญประกาศน์) หรือ '...' (ฟันหนู) หรือไม่มีอะไรครอบเลยก็ได้
ตัวอย่างข้อมูลไฟล์ CSV มาตรฐาน
"r1c1","r1c2","r1c3"
"r2c1","r2c2","r2c3"
"r3c1","r3c2","r3c3"

การอ่านข้อมูลจากไฟล์ CSV เข้าฐานข้อมูล 
<?php
// โหลดไฟล์ CSV
$f = @fopen('grade.csv', 'r');
if ($f) {
  // อ่านข้อมูลออกเป็นแอเรย์ ทีละแถว ด้วย fgetcsv
  while (($datas = fgetcsv($f)) !== false) {
    $save = array();
    foreach ($datas as $item) {
      // แปลงอักขระเป็น UTF-8
      // ถ้ามั่นใจว่าข้อมูลนี้ไม่ใช่ภาษาไทยแน่ๆ สามารถข้ามคำสั่ง iconv ได้
      //  $save[] = $item
      $save[] = iconv('TIS-620', 'UTF-8', $item);
    }
    // SQL Query
    $sql = 'INSERT INTO `table` VALUES ("'.implode('","', $save).'")';
    // เขียนคำสั่ง query ข้อมูลที่นี่
  }
  fclose($f);
}
?>

ตัวอย่างนี้เป็นการอ่านข้อมูลจากไฟล์ grade.csv และ Import เข้าฐานข้อมูลที่เป็น UTF-8 ด้วยฟังก์ชั่น fgetcsv() ของ PHP
  • เนื่องจาก ไฟล์ CSV มาตรฐานถ้าเป็นภาษาไทย รหัสอักขระจะเป็น TIS-620 หรือ Windows-874 ดังนั้น ก่อนการนำเข้าต้องแปลงให้เป็น UTF-8 ก่อนด้วย iconv()
  • สำหรับข้อมูลบางฟิลด์ที่ไม่เป็นภาษาไทยแน่ๆ เราสามารถเขียนคำสั่งเพื่อข้ามการแปลงอักขระได้ (ไม่ต้องใช้ iconv() กับข้อมูลนี้)
  • สำหรับไฟล์ excel ที่เป็น XLS หากเราต้องการนำมา Import ด้วยวิธีนี้ เราสามารถทำการแปลงฟอร์แมตไฟล์ได้ด้วย Excel โดยการ Save As ให้เป็นชนิด CSV
  • ตัวอย่างนี้ไม่ได้รวมเอาการบันทึกข้อมูลลงฐานข้อมูลไว้ ให้เขียนคำสั่งในส่วนนี้ด้วยตัวเอง
0SHAREFacebookLINE it!
^