6/27/2561

วิธี 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 ของผมเป็นดังนี้

<?php
//ส่วนของการเชื่อมต่อฐานข้อมูล MySQL
$objConnect = mysql_connect("localhost","username","password") or die("Error Connect to Database"); // Conect to MySQL
$objDB = mysql_select_db("database_name");

//ทำการเปิดไฟล์ CSV เพื่อนำข้อมูลไปใส่ใน MySQL
$objCSV = fopen("member.csv", "r");
while (($objArr = fgetcsv($objCSV, 1000, ",")) !== FALSE) {
        //นำข้อมูลใส่ในตาราง member
 $strSQL = "INSERT INTO member ";

        //ข้อมูลใส่ใน field ข้อมูลดังนี้
 $strSQL .="(id,name,lastname,age,tel) ";
 $strSQL .="VALUES ";
        
        //ข้อมูลตามที่อ่านได้จากไฟล์ลงฐานข้อมูล
 $strSQL .="('".$objArr[0]."','".$objArr[1]."','".$objArr[2]."' ";
 $strSQL .=",'".$objArr[3]."','".$objArr[4]."') ";
 
 //ให้ข้อมูลอยู่ในรูปแบบที่อ่านได้ใน phpmyadmin (By.SlayerBUU Credits พี่ไผ่)
 mysql_query("SET NAMES UTF8");

 //เพิ่มข้อมูลลงฐานข้อมูล
 $objQuery = mysql_query($strSQL);
}
fclose($objCSV);

echo "Import Done.";
?>
ขอขอบคุณ Code จาก thaicreate.com

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


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

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



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

ตัวอย่าง Code

<?php
$objConnect = mysql_connect("localhost","username","password") or die("Error Connect to Database"); // Conect to MySQL
$objDB = mysql_select_db("database_name");

$sql = ("SELECT * from member");
mysql_query("SET NAMES UTF8");

$result = mysql_query($sql);
While($row= mysql_fetch_array($result)){
echo "id = ".$row['id'];
echo "name = ".$row['name'];
echo "lastname = ".$row['lastname'];
echo "age = ".$row['age'];
echo "tel = ".$row['tel'];
}
?>


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



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

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

แสดงความคิดเห็น