8/29/2554

วิธี Import ข้อมูลใน Excel (xls , xlsx) เข้าสู่ MySQL

Update 3-5-2011 !!!!
ให้อ่านเป็นภาษาไทยใน database ได้แล้ว


          หลายๆ คนคงเจอปัญหาประมาณว่า มีข้อมูลอยู่ในไฟล์ Excel แล้วต้องการที่จะนำข้อมูลไปใช้กับ MySQL ผมก็เจอกับปัญหานี้เช่นกัน ลองมาหลายๆวิธีแล้วพบปัญหา import แล้ว error หรือไม่แสดงออกมาเป็นภาษาไทย


          วันนี้ผมมีวิธีการ Import ข้อมูลจาก Excel เข้าสู่ MySQL และสามารถแสดงออกมาเป็นภาษาไทยในรูปแบบ UTF-8 แบบไม่มีปัญหาใดๆ ^^ มาเริ่มกันเลยดีกว่า




ก่อนอื่นผมมีตัวอย่างจากไฟล์ xls ดังนี้

ทำการ Save File Excel ให้เป็น CSV ก่อนดังนี้
ไปที่ File -> Save As -> OtherFormats

จากนั้นเลือก Formats เป็น CSV (Comma delimited) (*.csv)


จากนั้นทำการแปลง Encode ของไฟล์เป็น UTF-8 โดย
เปิดไฟล์ CVS ด้วย Notepad


หาก Save ถูก Formats จะพบข้อมูลดังรูป


ทำการลบข้อมูลหัวตารางออกให้เลือกแต่ข้อมูลที่เราต้องการนำไปใส่ใน MySQL


ไปที่ File -> Save As


ด้านล่างเลือก Encoding เป็น UTF-8


เข้าไปสร้างฐานข้อมูลและตารางใน MySQL ตามข้อมูลที่เราต้องการ
ตัวอย่างของผมเป็นดังนี้
สร้างฐานข้อมูลชื่อ slayer_project และเลือก MySQL connection collation: เป็น utf8_unicode_ci


สร้างตารางตามข้อมูลที่มีอยู่


จากนั้นทำการเขียน Code PHP เพื่ออ่านข้อมูลจากไฟล์ CVS ลงฐานข้อมูล MySQL
ตัวอย่าง Code ของผมเป็นดังนี้

  1. //ส่วนของการเชื่อมต่อฐานข้อมูล MySQL  
  2. $objConnect = mysql_connect("localhost","username","password"or die("Error Connect to Database"); // Conect to MySQL  
  3. $objDB = mysql_select_db("database_name");  
  4.   
  5. //ทำการเปิดไฟล์ CSV เพื่อนำข้อมูลไปใส่ใน MySQL  
  6. $objCSV = fopen("member.csv""r");  
  7. while (($objArr = fgetcsv($objCSV, 1000, ",")) !== FALSE) {  
  8.         //นำข้อมูลใส่ในตาราง member  
  9.  $strSQL = "INSERT INTO member ";  
  10.   
  11.         //ข้อมูลใส่ใน field ข้อมูลดังนี้  
  12.  $strSQL .="(id,name,lastname,age,tel) ";  
  13.  $strSQL .="VALUES ";  
  14.           
  15.         //ข้อมูลตามที่อ่านได้จากไฟล์ลงฐานข้อมูล  
  16.  $strSQL .="('".$objArr[0]."','".$objArr[1]."','".$objArr[2]."' ";  
  17.  $strSQL .=",'".$objArr[3]."','".$objArr[4]."') ";  
  18.    
  19.  //ให้ข้อมูลอยู่ในรูปแบบที่อ่านได้ใน phpmyadmin (By.SlayerBUU Credits พี่ไผ่)  
  20.  mysql_query("SET NAMES UTF8");  
  21.   
  22.  //เพิ่มข้อมูลลงฐานข้อมูล  
  23.  $objQuery = mysql_query($strSQL);  
  24. }  
  25. fclose($objCSV);  
  26.   
  27. echo "Import Done.";  
  28. ?>  
ขอขอบคุณ Code จาก thaicreate.com

นำไฟล์ cvs ไว้ที่เดียวกับไฟล์ php เพื่อทำการ import


หากการ Import ข้อมูลไม่มีปัญหาจะขึ้นข้อความว่า Import Done.

เมื่อลองดูในฐานข้อมูลก็จะพบว่ามีข้อมูลที่เราต้องการอยู่ในฐานข้อมูลแล้ว

ลองเขียน Code ดึงข้อมูลออกมาแสดงเปิดดูในรูปแบบ UTF-8 ก็แสดงภาษาไทยได้อย่างไม่มีปัญหา ก่อนที่จะ query ข้อมูลออกมาต้อง mysql_query("SET NAMES UTF8");ก่อนด้วยครับ

ตัวอย่าง Code

  1. $objConnect = mysql_connect("localhost","username","password"or die("Error Connect to Database"); // Conect to MySQL  
  2. $objDB = mysql_select_db("database_name");  
  3.   
  4. $sql = ("SELECT * from member");  
  5. mysql_query("SET NAMES UTF8");  
  6.   
  7. $result = mysql_query($sql);  
  8. While($row= mysql_fetch_array($result)){  
  9. echo "id = ".$row['id'];  
  10. echo "name = ".$row['name'];  
  11. echo "lastname = ".$row['lastname'];  
  12. echo "age = ".$row['age'];  
  13. echo "tel = ".$row['tel'];  
  14. }  
  15. ?>  


ตัวอย่างข้อมูลที่แสดง


Credits : พี่ตั้ม , อ.กบ , thaicreate.com , พี่ไผ่
Link เกี่ยวข้อง : http://www.thaicreate.com/php/php-convert-csv-to-mysql.html

1 ความคิดเห็น:

  1. มันเปนงี้ทำไงดีครับ

    Fatal error: Allowed memory size of 25165824 bytes exhausted (tried to allocate 1441845 bytes) in C:\AppServ\www\phpMyAdmin\sql.php on line 376

    ตอบลบ