ให้อ่านเป็นภาษาไทยใน database ได้แล้ว
หลายๆ คนคงเจอปัญหาประมาณว่า มีข้อมูลอยู่ในไฟล์ Excel แล้วต้องการที่จะนำข้อมูลไปใช้กับ MySQL ผมก็เจอกับปัญหานี้เช่นกัน ลองมาหลายๆวิธีแล้วพบปัญหา import แล้ว error หรือไม่แสดงออกมาเป็นภาษาไทย
วันนี้ผมมีวิธีการ Import ข้อมูลจาก Excel เข้าสู่ MySQL และสามารถแสดงออกมาเป็นภาษาไทยในรูปแบบ UTF-8 แบบไม่มีปัญหาใดๆ ^^ มาเริ่มกันเลยดีกว่า
ก่อนอื่นผมมีตัวอย่างจากไฟล์ xls ดังนี้
ทำการ Save File Excel ให้เป็น CSV ก่อนดังนี้
ไปที่ File -> Save As -> OtherFormats
จากนั้นทำการแปลง 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
<?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']; } ?>
ตัวอย่างข้อมูลที่แสดง
Link เกี่ยวข้อง : http://www.thaicreate.com/php/php-convert-csv-to-mysql.html
มันก็ขึ้น Import Done แต่ข้อมูลไม่มีในฐานข้อมูลเลยอะครับ
ตอบลบต้องทำงัยครับ
ถ้าไม่มีข้อมูล แสดงว่าแก้ไข Code ผิดหรือเชื่อมต่อกับฐานข้อมูลไม่ได้ครับ
ตอบลบผมใช้อยู่ ทำดูหลายรอบ ไม่มีปัญหาอะไรนะครับ
ของผมมันขึ้นแบบนี้ครับ...
ตอบลบWarning: copy(customer.csv) [function.copy]: failed to open stream: Permission denied in F:\AppServ\www\PSU2\Excel Import to MySql\phpCSVMySQLUpload.php on line 7
Upload & Import Done.
ข้อมูลสามารถเพิ่มได้แต่ว่ามันขึ้นอย่างที่เห็นครับ
Permission denied ประมาณว่าไม่มีสิทธิ์ในการเข้าถึง ลองเปลี่ยน Permission ดูนะครับ
ตอบลบรบกวนถามหน่อยครับ พอดีผมต้องการเปลี่ยนจาก insert ไปเป็น update ผมต้องแก้ไขตรงไหนบ้างครับ ^^" ขอบคุณครับ
ตอบลบมีประโยชน์ครับ เดี๋ยวลองเอาไปใช้ดูก่อน
ตอบลบพอเปิดแล้วเป็นภาษาต่างด้าวค่ะ
ตอบลบต้องแก้ยังไงค่ะ ????????
ผมลองแล้ว ภาษาไทยเข้าไม่ครบครับ ไม่แน่ใจว่ามีปัญหาอะไร เลยลองอีกวิธี พอได้ CSV ที่เป็น UTF-8 แล้ว import upload เข้าทาง phpadmin ตรง ๆ เลยได้ ไม่ติดปัญหาอะไร และสะดวกดีครับ
ตอบลบขอบคุณมากครับ พี่เอาวิธีของน้องไปทำได้ผลดีครับ :0) กดไลค์ให้เลย
ตอบลบอ้อ ท่านที่ Save เป็น CSV แล้ว พอมาเปิด กับ Notepad เห็นเป็นตัวยึกยือ ผมเจอเหมือนกัน แต่เคยทำอะไรแนวนี้มาก่อน เลยลองดูแล้วก็ได้ผลเชื่อไหม เส้นผมบังภูเขาครับ นั่นคือ Font ของ Excel ครับ ให้ Select All ข้อมูลทุกฟิลด์และแถว หรือ Hightlight ด้วยตัวเองก็ได้ จากนั้น กดเลือก Font ตามปกติ แต่เลือกเป็นที่มี UPC เช่น AngsanaUPC แล้วค่อย Save as เป็น CSV เรียบร้อยครับ
ตอบลบอีกกรณี ทำแบบนี้แล้ว เปิดมาดูก็ยึกยือ เจอเหมือนกัน ให้ปิด Notepad ให้หมดแล้วเปิดใหม่ แล้ว Open ก็จะได้ครับ มันอยู่ที่ 2 อันนี้ หากไม่ได้ ก็ปิด Excel แล้วทำใหม่ ได้แน่ๆ ครับผม ของผมตอนนี้ข้อมูล ไทย ไปอยู่ใน ฐานข้อมูลอย่างสมบูรณ์ เพราะเจ้าของ บล็อคนี้แท้ๆ ขอบคุณมากๆ ครับผม :0)
คุณสันต์
ผมลองทำตามที่ท่านคมสันบอกแล้ว แต่ก็ยังไม่หาย ผมใช้ office 2013 จะเกี่ยวมั้ยครับ
ตอบลบติดปัญหาช่วยเซฟไฟล์ excel พอเปิดใน notepad อ่านภาษาไทยไม่ได้ เช็ค encoding ก็เป็น utf-8 แล้วด้วยค่ะ
ตอบลบทาง webhosting บางราย บอกว่า จะ import ข้อมูลที่เป็น excel ไม่ได้ ถ้าเขาใช้ Linux ทั้งๆ ที่ excel file ที่จะ import ถูกแปลงเป็น .csv แล้งแปลงเป็นรูปของ notepad แล้ว เรื่องนี้จริงหรือไม้ ช่วยแชร์ที trick หรือมี อะไรดีก็รบกวนด้วย
ตอบลบจิ๊ก@Bangkok
ยอดไปเลย ขอบคุณมว๊ากกกกกกกกกกกกกกกก เลยจ้า
ตอบลบตามหามานาน ขอบคุณมากๆๆๆๆๆๆ นะคะ
ตอบลบInvalid field count in CSV input on line 1.
ตอบลบหมายความว่าอะไรครับ