หลังจากที่ได้พูดถึงการเก็บข้อมูลเข้า Elasticsearch ด้วย Apache Spark แล้ว วันนี้มาดูวิธีดึงข้อมูลจาก Relational Database อย่าง MySQL กันบ้าง ซึ่งปกติแล้ว Spark จะดึงข้อมูลทั้งหมดที่อยู่ใน table ออกมาให้เลย แต่ก็มีเทคนิคที่จะดึงข้อมูลจากเงื่อนไขที่เราต้องการได้เหมือนกัน ^^
บทความที่เกี่ยวข้องกับ: mysql
วิธี start & stop MySQL แบบ manual บน OS X Yosemite
อ่านหัวข้อเท่านั้นแหละ คำถามเกิดขึ้นมาทันที แล้วจะไป start/stop แบบ manual ทำไมล่ะ? เพราะให้มันเริ่มทำงานเองอัตโนมัติก็สะดวกดีอยู่แล้วไม่ใช่หรอ คำตอบมันก็ใช่อ่ะ ถ้าหากแรมหรือ cpu ของเรามีอยู่เหลือเฟือจริงไหม
ข้อควรระวังในการใช้ ENUM ของ MySQL
ช่วงนี้มีปัญหากับเจ้า ENUM ตลอดเลย TT^TT เกี่ยวกับการ insert ล้วนๆ ครับ ปัญหามีอยู่ว่าระบบที่มีอยู่แล้วมีการใช้ datatype ENUM ซึ่งเก็บค่า ‘0’,’1′,’2′,’3′,’4′ และผมก็มีการปรับปรุงเพิ่มเติมคือ มีค่าที่ต้องการจะเก็บเข้าไปเพิ่ม ค่าที่เพิ่มเข้าไปก็คือ ‘5’,’6′ แต่ก่อนที่จะปรับปรุงไม่ได้เข้าไปดูชนิดข้อมูลที่เก็บ (นี่ก็เป็นความไม่ละเอียดของตัวผมเองนี่แหละ ^^ ) พอไม่ได้เช็คแล้วไป insert ค่าที่เป็น ‘5’ หรือ ‘6’ มันก็เก็บเป็น ‘4’ ให้ตลอด กว่าจะรู้ก็ตอนที่จะลองแก้ค่าตรงๆ ที่ฐานข้อมูลเลย เข้าไปดูปุ๊บ อ้าวเฮ้ย ENUM นี่หว่า เรียบร้อยเจ็บนิดๆ
วิธีการใช้ PHP เชื่อมต่อฐานข้อมูล MySQL
เกี่ยวกับ PHP เชื่อมต่อฐานข้อมูล MySQL จะใช้ทีไรเป็นต้องค้นทุกที ก็เลยเอามาเก็บไว้ซะเลย เผื่อจะมีเพื่อนๆ ที่กำลังหาข้อมูลหรือกำลังติดปัญหาในการใช้งานฐานข้อมูล MySQL ผ่าน PHP อยู่ด้วย ซึ่งตัวอย่างนี้จะประกอบด้วย วิธีการเชื่อมต่อฐานข้อมูล และการดึงข้อมูล (select) มาแสดงด้วยการ fetch ผลการค้นหาออกมาเป็น array ครับ
การ import ข้อมูลเข้าฐานข้อมูล MySQL ผ่าน command line
ทำไมต้องทำผ่าน command line ด้วยล่ะ phpmyadmin เลยสิ มันก็ได้นะครับ แต่บางครั้งไฟล์มันใหญ่ไป ถ้าเราตั้งค่าให้มันรับได้เยอะ ก็โอเคนะ แต่ถ้าไม่ก็ import ผ่าน command line เลยดีกว่าจะได้ไม่ต้องเสียเวลาไปตั้งค่า ขนาดของไฟล์เพิ่ม วิธีการก็ไม่อยากครับตามนี้เลยนะ ^^
mysql -u username -p database_name < /path/to/mysql.sql
เท่านี้ก็ไม่ต้องกังวลถึงขนาดไฟล์ sql ที่เรา export ออกมาแล้วครับ ^^
แก้ปัญหาของ OSX Lion ที่เกิดข้อผิดพลาดเกี่ยวกับ MySQL sock path
ผมได้อัพเดทเจ้า mackbook air ของผมเป็น mountain lion ทำให้เกิดปัญหาเกี่ยวกับ sock path ของ MySQL ก็เลยลองๆ หาข้อมูลดูก็พบวิธีแก้คือ
- ปิดการทำงาน (shut down) ของ web sharing ก่อน
- คัดลอก php.ini.defult และเปลี่ยนชื่อเป็น php.ini
sudo cp /etc/php.ini.default /etc/php.ini
- แก้ไขไฟล์ php.ini โดยเปลี่ยนค่า /var/mysql/mysql.sock เป็น /tmp/mysql.sock
- เปิดใช้งาน web sharing
เท่านี้ผมก็สามารถเชื่อมต่อฐานข้อมูลได้แล้วครับ