•
LOAD DATA by MySQL
- เรื่องของเรื่องก็มีอยู่ว่า
- ทำเว็บให้ลูกค้าคนหนึ่ง…ลูกค้าคนนี้มีข้อมูลอยู่แล้วเป็น TEXT File ซึ่งจำนวนข้อมูลก็มากโขอยู่ มากสุดอยู่ที่ 150,000 Records ไ้อ้โปรเจคนี้แน่นอนว่า develop ด้วย php ปัญหาเกิดขึ้นตอนที่จะต้องเอาข้อมูลทั้งหมดยัดเข้าไปใส่ใน MySQL จ๊ากกกก เอาไงหว่าจะให้ วน Loop ที่ละบรรทัดแล้ว Insert เข้าไปก็นะ ถึก…โครต สุดท้ายก็มาเจอคำสั่ง LOAD DATA ของ MySQL
- LOAD DATA
ปัญหาแรกที่เจอก็คือ - 1.เขียนคำสั่ง
ผิดอ่าว กรรม…ตอนแรกก็นึกว่าถูกแล้วเพราะ ไปดูคำสั่งจาก phpmyadmin แก้ไปแก้มาก็พบว่า Path ของไฟล์ บน Linux กับ Windows มันไม่เหมือนกันนี่หว่า… เช่นWINDOWS\web\data\load_data\data.txt
Unix
/web/data/load_data/data.txt
อ่ะเจอก็แก้ปัญหากันไป ซึ่งไม่ว่าจะเป็น Windows หรือ Unix เราสามารถใช้ฟังก์ชั้น getcwd() ของ php ช่วยดู Current Path ของ Script ที่เราทำงานอยู่ได้ - 2.เมื่อข้อมูลขึ้นบรรทัดใหม่ ปัญหานี้หนักหนาเอาการ เล่นแก้กันเป็นอาทิตย์ๆๆ ซึ่งที่เจอๆ ก็จะมี เช่น
และ
:
$SQL = “LOAD DATA LOCAL INFILE ‘”.getcwd().”/update/”.$filename.”‘”;
$SQL .= ” INTO TABLE `guarantor` “;
$SQL .= ” FIELDS TERMINATED BY ‘,’”;
$SQL .= ” OPTIONALLY ENCLOSED BY ‘\\\”‘”;
$SQL .= ” LINES TERMINATED BY ‘\\r’”; จะไม่มี\\n
$SQL .= ” IGNORE 1 LINES”;
:
แล้วตูจะเลือกใช้ตอนไหนยังไงหว่ะเนี้ย…ไม่รู้ครับ..คงต้องลองกันดู -_-!!!
:
$SQL = “LOAD DATA LOCAL INFILE ‘”.getcwd().”/update/”.$filename.”‘”;
$SQL .= ” INTO TABLE `guarantor` “;
$SQL .= ” FIELDS TERMINATED BY ‘,’”;
$SQL .= ” OPTIONALLY ENCLOSED BY ‘\\\”‘”;
$SQL .= ” LINES TERMINATED BY ‘\\r\\n’”; จะต้องมี\\n
$SQL .= ” IGNORE 1 LINES”;
:
- 3. FTP FILE ปัญหานี้เล่นเอา หงุดหงิด ไปทั้งวัน คือเวลาเรา FTP File ขึ้นไปวาง ด้วยโปรแกรม FileZilla คำสั่ง LOAD DATA ไม่สามารถใช้การได้ อ่าว..มีงี้ด้วย คุณต้องลอง FTP ไฟล์โดยผ่านทาง IE กรรมแท้ เล่น งี้ งง เป็นไก่ตาแตกครับพี่น้อง…ซึ่งคาดว่าโปรแกรมอื่นๆ ก็น่าจะเหมือนกัน เช่น CuteFTP
- อ่ะยังไงก็ลอง เอาไปใช้เล่นๆ กันดูครับ คาดว่าคงจะมีประโยชน์กันบ้างเน้ออออ ไปละ ไม่ไหว หิวข้าว อ่ะ







Leave a comment