ยินดีต้อนรับคุณ, บุคคลทั่วไป กรุณา เข้าสู่ระบบ หรือ ลงทะเบียน
ส่งอีเมล์ยืนยันการใช้งาน?
เข้าสู่ระบบด้วยชื่อผู้ใช้ รหัสผ่าน และระยะเวลาในเซสชั่น

หน้า: [1] 2 3 4   ลงล่าง
  ตอบ  |  ส่งหัวข้อนี้  |  พิมพ์  
ผู้เขียน หัวข้อ: วิธีการนำข้อมูลจากไฟล์ Excel Import เข้าสู่ฐานข้อมูล MySql  (อ่าน 52445 ครั้ง)
0 สมาชิก และ 1 บุคคลทั่วไป กำลังดูหัวข้อนี้
Nathan_bc
อดีตกาลผ่านมาแล้วก็ช่างมัน
ทำเนียบรุ่น BC46
โปรแกรมเมอร์ระดับโคตรเทพ
*****
ออฟไลน์ ออฟไลน์

เพศ: ชาย
กระทู้: 2875


ปัจจุบันยังชีพอยู่สู้ต่อไป

one_bc@hotmail.com 085-8383607
ดูรายละเอียด เว็บไซต์
« เมื่อ: September 25, 2008, 01:52 PM »
แบ่งปัน ตอบโดยอ้างถึงข้อความอ้างถึง


ซึ่งในชีวิตการทำงานจริงๆ การนำข้อมูลจากไฟล์ Excel Import เข้าสู่ฐานข้อมูล MySql คงต้องมีแน่นอนโดยเฉพาะคนที่ดูแลเกี่ยวกับเว็บ Application ที่ใช้ฐานข้อมูล MySql

ก่อนอื่นต้องเตรียมไฟล์ Excel ที่เราจะทำการ Import ลง db วิธีเตรียมไฟล์คือ

ก่อนอื่นต้องทำความเข้าใจก่อนว่าเวลาเอาข้อมูลไปใส่ในฐานข้อมูล

ข้อมูลในแนวตั้ง(column) ในไฟล์ excel จะเป็นข้อมูลที่ตรงกับ ฟิวด์แต่ละฟิวในฐานข้อมูล
ข้อมูลในแนวนอน(row) ในไฟล์ excel จะเป็นข้อมูลที่เป็้น เรคคอร์ดในฐานข้อมูล

ถ้าไม่เข้าใจลองเทสๆๆ import ดูครับ

เปลี่ยนนามสกุลไฟล์เป็น .xml โดยปกติไฟล์ Excel จะมีนามสกุลเป็น .xls ก็ให้เปลี่ยนเป็นนามสกุล  .xml 
วิธีการเปลี่ยนก็คือเปิดไฟล์ Excel ที่ต้องการขึ้นมาแล้วไปที่  File > Save as แล้วเลือกชนิดไฟล์เป็น XML Spreadsheet(*.xml) แค่นี้เราก็จะได้ไฟล์ใหม่นามสกุล .xml ครับ

แทนที่ช่องว่างของ cell ด้วย - เนื่องจากเวลาที่รันโปรแกรม โปรแกรมมันจะไม่นับเรคคอร์ดของ cell ที่มีช่องว่าง ทำให้การนับเรคคอร์ดของโปรแกรมผิดพลาด ดังนั้นเราควรจะแทนที่ช่องว่างด้วย - ซึ่งสามารถทำได้ง่ายๆโดย กด Ctrl+F ก็จะขึ้นป๊อบอัพค้นหาขึ้นมา แล้วให้คลิกที่แถบ Raplace ตรงช่อง Find what ให้เว้นว่างใว้ ส่วนช่อง Replace with ให้ใส่ - เพื่อเป็นการค้นหาช่องว่างแล้วแทนที่้ด้วย -

แทนที่เครื่องหมาย ' ด้วยช่องว่าง เนื่องจากในคำสั่ง Sql เวลาใช้เครื่องหมาย ' เข้าไปด้วยจะทำให้โปรแกรมทำงานผิดพลาดดังนั้นควร ค้นหา ' แล้วแทนที่ด้วยช่องว่าง ทำคล้ายๆข้อที่ผ่านมา

เสร็จแล้วก็ Save ไฟล์ ก็สิ้นสุดวิธีการเตรียมไฟล์ใว้เพื่อ Import เข้า DB คับ


ต่อมาก็มาดูการเขียนโค๊ดเพื่อทำการ  Import ไฟล์ Excel เข้า DB คับ

เริ่มเลยคับ ก่อนอื่นให้สร้างไฟล์ชื่อ uploadExcel.php ใว้เป็นฟอร์มสำหรับ browse ไฟล์ ซึ่่งภายในไฟล์เขียนโค๊ดดังนี้

โค๊ด:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>
<body>
<form enctype="multipart/form-data" action="import.php" method="post">
 <input type="hidden" name="MAX_FILE_SIZE" value="2000000" />
 <input name="file" type="file" />
 <input type="submit" value="Upload" />
</form>

</body>
</html>

ขั้นตอนต่อมาสร้างไฟล์ชื่อ import.php เป็นไฟล์สำหรับดึงข้อมุลจากไฟล์ Excel มาใส่ใน MySql ซึ่งภายในไฟล์เขียนโค๊ดดังนี้

โค๊ด:
<?php 
    
if ( $_FILES['file']['error'] ) { 
        die(
"upload error "); 
    } 
  
 
//======Connect DB======================//   
    
$m_host "localhost"
    
$m_user "root"
    
$m_pass "pwd"
    
$m_name "dbname"

    
mysql_connect($m_host,$m_user,$m_pass);  
    
mysql_select_db($m_name); 
    
mysql_query("SET NAMES UTF8"); 
 
//======End Connect DB======================//   

 //======Get data from Excel======================//        
    
$dom    =    DOMDocument::load$_FILES['file']['tmp_name'] ); 
    
$rows    =    $dom->getElementsByTagName'Row' ); 
    
$row    =    0
     
    foreach (
$rows as $temp) { 
        
$col 0
        if(
$row==0) { 
            
$row++; continue; 
        } 
        
$cells    $temp->getElementsByTagName('Cell'); 

        foreach( 
$cells as $cell )  { 
             if(
$col==0$data1 $cell->nodeValue
             if(
$col==1$data2 $cell->nodeValue
             if(
$col==2$data3 $cell->nodeValue
             if(
$col==3$data4 $cell->nodeValue
             if(
$col==4$data5 $cell->nodeValue
             
$col++; 
        } 
 
//======End Get data from Excel======================//        

//==================Insert To DB ====================================//
$sql " INSERT INTO table_name (";
$sql .= " field_1, ";
$sql .= " field_2, ";
$sql .= " field_3, ";
$sql .= " field_4, ";
$sql .= " field_5 ";
$sql .= " ) VALUES ( ";
$sql .= " '$data1', ";
$sql .= " '$data2', ";
$sql .= " '$data3', ";
$sql .= " '$data4', ";
$sql .= " '$data5' ";
$sql .= " ) ";
mysql_query($sql) or die(mysql_error()); 
//==================End Insert To DB ====================================//
 
$row++;  
  } 

mysql_close();
?>

สร้างไฟล์เสร็จหมดแล้ว ทีนี้ก็ถึงวิธีการ Import ก็ให้รันไฟล์ uploadExcel.php แล้วก็ Browse เลือกไฟล์ Excel ที่เตรียมใว้ แล้วคลิกปุ่ม Upload ก็เป็นการเสร็จพิธี....หึหึ

 ;D :o ::)

« แก้ไขครั้งสุดท้าย: September 25, 2008, 02:00 PM โดย Nathan_Bc » บันทึกการเข้า

ีultraman[ccs]
โปรแกรมเมอร์ฝึกหัด
*
ออฟไลน์ ออฟไลน์

กระทู้: 1


ดูรายละเอียด
« ตอบ #1 เมื่อ: June 03, 2009, 04:19 PM »
แบ่งปัน ตอบโดยอ้างถึงข้อความอ้างถึง

พี่ครับ

code นี้

พอดึงข้อมูลจาก excel

แล้วทำไมไม่เป็นภาษาไทยครับ

มันเป็นอักขระ มั่วๆ อะครับ

ต้องทำไงครับ
บันทึกการเข้า
Nathan_bc
อดีตกาลผ่านมาแล้วก็ช่างมัน
ทำเนียบรุ่น BC46
โปรแกรมเมอร์ระดับโคตรเทพ
*****
ออฟไลน์ ออฟไลน์

เพศ: ชาย
กระทู้: 2875


ปัจจุบันยังชีพอยู่สู้ต่อไป

one_bc@hotmail.com 085-8383607
ดูรายละเอียด เว็บไซต์
« ตอบ #2 เมื่อ: June 03, 2009, 04:50 PM »
แบ่งปัน ตอบโดยอ้างถึงข้อความอ้างถึง

พี่ครับ

code นี้

พอดึงข้อมูลจาก excel

แล้วทำไมไม่เป็นภาษาไทยครับ

มันเป็นอักขระ มั่วๆ อะครับ

ต้องทำไงครับ
ลองเปลี่ยนโค๊ดตรง
โค๊ด:
//======Connect DB======================//   
    $m_host = "localhost";
    $m_user = "root";
    $m_pass = "pwd";
    $m_name = "dbname";

    mysql_connect($m_host,$m_user,$m_pass); 
    mysql_select_db($m_name);
    mysql_query("SET NAMES UTF8");
 //======End Connect DB======================//
มาเป็น
โค๊ด:
//======Connect DB======================//   
    $m_host = "localhost";
    $m_user = "root";
    $m_pass = "pwd";
    $m_name = "dbname";

    mysql_connect($m_host,$m_user,$m_pass); 
    mysql_select_db($m_name);
    mysql_query("SET NAMES tis620");
 //======End Connect DB======================//
ลองดูครับ
บันทึกการเข้า

Nathan_bc
อดีตกาลผ่านมาแล้วก็ช่างมัน
ทำเนียบรุ่น BC46
โปรแกรมเมอร์ระดับโคตรเทพ
*****
ออฟไลน์ ออฟไลน์

เพศ: ชาย
กระทู้: 2875


ปัจจุบันยังชีพอยู่สู้ต่อไป

one_bc@hotmail.com 085-8383607
ดูรายละเอียด เว็บไซต์
« ตอบ #3 เมื่อ: July 07, 2009, 01:01 PM »
แบ่งปัน ตอบโดยอ้างถึงข้อความอ้างถึง

Fatal error: Undefined class name 'domdocument' in c:\appserv\www\importexcel\import.php on line 18
upload แล้วขึ้นข้อความแบบนี้หมายถึงอะไรคะ
น่าจะเป็นที่ยังไม่ได้เปิดใช้งาน DOM/XML ครับ php เวอร์ชันเก่าๆไม่น่าจะใช้ได้ครับ ลองโหลด AppServ 2.5.9 จากลิ้งค์นี้  http://www.appservnetwork.com/  ไปติดตั้งใหม่ดูครับ ซึ่งใช้ได้ไม่มีปัญหาอะไรครับผม 
บันทึกการเข้า

Nathan_bc
อดีตกาลผ่านมาแล้วก็ช่างมัน
ทำเนียบรุ่น BC46
โปรแกรมเมอร์ระดับโคตรเทพ
*****
ออฟไลน์ ออฟไลน์

เพศ: ชาย
กระทู้: 2875


ปัจจุบันยังชีพอยู่สู้ต่อไป

one_bc@hotmail.com 085-8383607
ดูรายละเอียด เว็บไซต์
« ตอบ #4 เมื่อ: September 10, 2009, 03:08 PM »
แบ่งปัน ตอบโดยอ้างถึงข้อความอ้างถึง

พี่ครับ ของผมใม error ตรงนี้อ่ะครับ

Warning: DOMDocument::load() [function.DOMDocument-load]: Empty string supplied as input in .................

ช่วยแนะนำให้หน่อยครับ
และข้อมูลที่ผมนำเข้าอ่ะคับ มีมากถึง 60000 เรค์คอรด์ อ่ะ ครับ ไม่ทราบว่า มากขนาดนี้จะได้ใหม ครับ ช่วยด้วยครับ


ขอบคุณทุกท่านน่ะครับ

อาจจะเกี่ยวกับจำนวนข้อมูลด้วยครับ ลองทดสอบกับข้อมูลน้อยๆดูก่อนครับว่ามีปัญหาไหม
บันทึกการเข้า

Nathan_bc
อดีตกาลผ่านมาแล้วก็ช่างมัน
ทำเนียบรุ่น BC46
โปรแกรมเมอร์ระดับโคตรเทพ
*****
ออฟไลน์ ออฟไลน์

เพศ: ชาย
กระทู้: 2875


ปัจจุบันยังชีพอยู่สู้ต่อไป

one_bc@hotmail.com 085-8383607
ดูรายละเอียด เว็บไซต์
« ตอบ #5 เมื่อ: September 29, 2009, 09:46 AM »
แบ่งปัน ตอบโดยอ้างถึงข้อความอ้างถึง

ขอบคุณครับพี่พอดีผมกำลังทำเว็บอยู่ติดเรื่องนำข้อมูลในฐานข้อมูลมาแสดงมันไม่เป็นภาษาไทยแต่ในฐานข้อมูลเป็นภาษาไทยนะพอในไฟล์ connect ผมใช้ mysql_query("SET NAMES tis620"); แต่มันก็ไม่เป็นภาษาไทยพอมาเห็นบล็อกของพี่แล้วไปเจอตรงที่เป็น mysql_query("SET NAMES UTF8"); เลยลองดูปรากฏว่าได้ครับ ขอบคุณหลายๆ ผม bc14 ครับ มมส.2 ปีต่อเนื่อง ถ้ามีปัญหาขอถามได้มั่ยครับ
มีปัญหาปรึกษาได้ตลอดครับ ยินดีครับ 
บันทึกการเข้า

Nathan_bc
อดีตกาลผ่านมาแล้วก็ช่างมัน
ทำเนียบรุ่น BC46
โปรแกรมเมอร์ระดับโคตรเทพ
*****
ออฟไลน์ ออฟไลน์

เพศ: ชาย
กระทู้: 2875


ปัจจุบันยังชีพอยู่สู้ต่อไป

one_bc@hotmail.com 085-8383607
ดูรายละเอียด เว็บไซต์
« ตอบ #6 เมื่อ: December 02, 2009, 10:18 PM »
แบ่งปัน ตอบโดยอ้างถึงข้อความอ้างถึง

ของผมมัน

upload &nbsp;error น่ะครับ &nbsp;

ผมไม่แน่ใจว่ามัน &nbsp;error &nbsp;เพราะว่า &nbsp;ผม save as เป็น &nbsp;spreadsheet 2003.xml หรือเปล่าครับ

และถ้า &nbsp;ไม่ใช่ &nbsp;มันเป็นเพราะอะไรเหรอครับ &nbsp;รบกวนหน่อยนะครับ


ขอขอบคุณล่วงหน้าครับ
 
ที่มันฟ้อง upload error ผมไม่แน่ใจว่ามัน error เพราะอะไร ให้ลองเปลี่ยนโค๊ดตรง

โค๊ด:
    if ( $_FILES['file']['error'] ) {
        die("upload error ");
    }

มาเป็น
โค๊ด:
    if ( $_FILES['file']['error'] ) {
echo $_FILES["file"]["error"];
    }


แล้วมันจะแสดง error ออกมาเป็นตัวเลขครับ ส่วนความหมายของตัวเลขว่ามัน error เพราะอะไรให้ดูตามลิ้งค์นี้ครับ
http://www.php.net/manual/en/features.file-upload.errors.php
เมื่อเรารู้ว่ามัน error เพราะอะไรเราก็จะได้แก้ปัญหาได้ถูครับ ลองดูครับสู้ๆ
บันทึกการเข้า

deoxy
บุคคลทั่วไป


อีเมล์
« ตอบ #7 เมื่อ: December 03, 2009, 04:03 PM »
แบ่งปัน ตอบโดยอ้างถึงข้อความอ้างถึง

ทำได้แล้วครับบ

ขอบคุณมากเลยครับบบบบบ


 



บันทึกการเข้า
แมน
บุคคลทั่วไป


อีเมล์
« ตอบ #8 เมื่อ: December 06, 2009, 03:13 PM »
แบ่งปัน ตอบโดยอ้างถึงข้อความอ้างถึง

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ') VALUES ( '1', 'man', 'narin', 'a', )' at line 1

ถ้ามันขึ้นมา แบบนี้หละครับ หมายความว่ายังไง ผมส่งสัยว่าจะเกียวกับ Excel คับ หรืออะไรบอกหน่อยคับ ช่วยบอกวิธีแก้ด้วยครับ ขอบคุณครับ
บันทึกการเข้า
Nathan_bc
อดีตกาลผ่านมาแล้วก็ช่างมัน
ทำเนียบรุ่น BC46
โปรแกรมเมอร์ระดับโคตรเทพ
*****
ออฟไลน์ ออฟไลน์

เพศ: ชาย
กระทู้: 2875


ปัจจุบันยังชีพอยู่สู้ต่อไป

one_bc@hotmail.com 085-8383607
ดูรายละเอียด เว็บไซต์
« ตอบ #9 เมื่อ: December 08, 2009, 02:46 PM »
แบ่งปัน ตอบโดยอ้างถึงข้อความอ้างถึง

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ') VALUES ( '1', 'man', 'narin', 'a', )' at line 1

ถ้ามันขึ้นมา แบบนี้หละครับ หมายความว่ายังไง ผมส่งสัยว่าจะเกียวกับ Excel คับ หรืออะไรบอกหน่อยคับ ช่วยบอกวิธีแก้ด้วยครับ ขอบคุณครับ
เขียนคำัสั่ง SQL ผิดครับ

 VALUES ( '1', 'man', 'narin', 'a', )

ลองตัด , ที่อยู่หลังตัว a ออกดูครับ
บันทึกการเข้า

myacc
โปรแกรมเมอร์ฝึกหัด
*
ออฟไลน์ ออฟไลน์

กระทู้: 6


ดูรายละเอียด เว็บไซต์
« ตอบ #10 เมื่อ: December 09, 2009, 08:42 AM »
แบ่งปัน ตอบโดยอ้างถึงข้อความอ้างถึง

แจ่มๆ ว่าแต่ว่าการดึง mysql นี่เรากำหนดภาษาได้ไหมคับ
บันทึกการเข้า
Nathan_bc
อดีตกาลผ่านมาแล้วก็ช่างมัน
ทำเนียบรุ่น BC46
โปรแกรมเมอร์ระดับโคตรเทพ
*****
ออฟไลน์ ออฟไลน์

เพศ: ชาย
กระทู้: 2875


ปัจจุบันยังชีพอยู่สู้ต่อไป

one_bc@hotmail.com 085-8383607
ดูรายละเอียด เว็บไซต์
« ตอบ #11 เมื่อ: December 09, 2009, 09:10 AM »
แบ่งปัน ตอบโดยอ้างถึงข้อความอ้างถึง

แจ่มๆ ว่าแต่ว่าการดึง mysql นี่เรากำหนดภาษาได้ไหมคับ
หมายถึงกำหนดภาษาแบบไหนหรอครับ ถ้าหมายถึงให้สามารถ Import ข้อมูลได้ทั้งภาษาไทยและภาษาอังกฤษอันนี้ได้ทั้งหมดครับ
บันทึกการเข้า

DaH
บุคคลทั่วไป


อีเมล์
« ตอบ #12 เมื่อ: December 10, 2009, 03:43 PM »
แบ่งปัน ตอบโดยอ้างถึงข้อความอ้างถึง

ขอบคุณมากๆเลยค่ะ กำลังหาวิธีส่งไฟล์เข้า MySQL อยู่พอดีเลย 
บันทึกการเข้า
มือใหม่หัดเขียน
บุคคลทั่วไป


อีเมล์
« ตอบ #13 เมื่อ: December 18, 2009, 11:39 AM »
แบ่งปัน ตอบโดยอ้างถึงข้อความอ้างถึง

Msg 102, Level 15, State 1, Line 1
Incorrect syntax near ','.

มันขึ้น error แบบนี้ คืออะไรครับ
บันทึกการเข้า
Nathan_bc
อดีตกาลผ่านมาแล้วก็ช่างมัน
ทำเนียบรุ่น BC46
โปรแกรมเมอร์ระดับโคตรเทพ
*****
ออฟไลน์ ออฟไลน์

เพศ: ชาย
กระทู้: 2875


ปัจจุบันยังชีพอยู่สู้ต่อไป

one_bc@hotmail.com 085-8383607
ดูรายละเอียด เว็บไซต์
« ตอบ #14 เมื่อ: December 18, 2009, 11:56 AM »
แบ่งปัน ตอบโดยอ้างถึงข้อความอ้างถึง

Msg 102, Level 15, State 1, Line 1
Incorrect syntax near ','.

มันขึ้น error แบบนี้ คืออะไรครับ

อืมๆๆ ผมไม่แน่ใจครับ อาจจะเกี่ยวกับข้อมูลที่ใช้ในการ Import ขอดูตัวอย่างไฟล์ที่ใช้ Import หน่อยครับ

แต่ดู เออเลอร์ที่เอามาดูเหมือน ก๊อบมาไม่หมดรึเปล่าครับ ถ้าก๊อบมาไม่หมดขอ ดูเออเลอร์เต็มๆที่ไม่ได้ตัดอีกทีนะครับ
บันทึกการเข้า

หน้า: [1] 2 3 4   ขึ้นบน
  ตอบ  |  ส่งหัวข้อนี้  |  พิมพ์  
 
กระโดดไป:  


Valid XHTML 1.0! Powered by SMF 1.1.5 | SMF © 2006-2008, Simple Machines LLC | Thai language by ThaiSMF
DSM: deruni
Valid CSS!
หน้านี้ถูกสร้างขึ้นภายในเวลา 0.202 วินาที กับ 24 คำสั่ง
สัญญาอนุญาตของครีเอทีฟคอมมอนส์
ผลงานนี้ ใช้สัญญาอนุญาตของครีเอทีฟคอมมอนส์แบบ แสดงที่มา-ไม่ใช้เพื่อการค้า-อนุญาตแบบเดียวกัน 3.0 ประเทศไทย.