MySQL คือ โปรแกรมจัดการฐานข้อมูลชนิดหนึ่งซึ่งก็เป็นที่รู้จักกันอย่างกว้างขวาง ก็ตั้งแต่เรียนมาก็ได้ยินแค่ MySQL ว่ามันคือสุดยอดฐานข้อมูลที่ทุกสถานศึกษาต่างแนะนำ พอเติบโตขึ้นมาหน่อยก็รู้จักกับ MariaDB แต่ในโลกของความจริงแล้วพอมาทำงานมันไม่ได้มีแค่ 2 ตัวน่ะสิ เอ้าลองเอาลิงค์นี้ไปดูคร่าวๆมีเป็นร้อย DB-Engines
แต่ทำไมเราถึงเลือก PostgreSQL ก็เพราะมันเร็วส์..แถม CRUD ยังเขียนเหมือน MySQL อีกไม่ต้องเรียนรู้อะไรเพิ่มมากแถมได้ความเร็วโดยไม่ดันทุรังจนเกินไปจึงเลือกตัวนี้แหละทีนี้งานที่เราจะต้องทำคือย้ายข้อมูลของ Mysql มาไว้ที่ Postgre ทั้งหมด เราจึงทำการกด export จาก phpMyAdmin ปกติแล้วก็ใช้คำสั่ง pg_dump ของ Postgre ในการ import Database แล้วกดปุ่ม ok …. 1 2 3 ตู้มมมมมตัวใหญ่ๆ เห้ยอะไรว่ะจากที่อ่านมาไหนบอกเหมือนกันทุกอย่างจากนั้นเราก็พยายามหาข้อมูลอยู่เยอะมากจนพบว่า data type หรือ ชนิดของ field มันไม่เหมือนกันเช่น string ใน Mysql = VARCHAR ใน Postgre = character varying เป็นต้น
หลังจากนั้นเราต้องหา solution เพื่อแปลง table, field ต่างๆจาก MySQL ให้เป็น PostgreSQL ให้ได้ก็ไปเจอตัวนี้ (จริงๆไปนั่งสร้าง field ใหม่แล้วค่อย migrate data ไปก็ได้ แต่ Programer อ่ะเนาะมันต้องยากๆหน่อย 555)
วิธีการใช้งานก็ไม่ยากเลย ขั้นแรกเราต้อง export Mysql DB ออกมาให้ compatible postgresql ก่อนแนะนำว่าให้ export ผ่าน mysqldump เพราะ phpMyAdmin นั้นไม่สามารถปรับ mode postgresql ได้ (*หรือผมหาไม่เจอใครเจอบอกด้วย)
mysqldump --compatible=postgresql --default-character-set=utf8 \
-r databasename.mysql -u username databasename
ในตัวอย่างผม export DB ชื่อว่า databasename.mysql จากนั้นเราก็ติดตั้ง python ให้เรียบร้อยแล้ว cd เข้าไปที่ git repo ที่ clone มาจากนั้นพิมพ์
python db_converter.py databasename.mysql outputname.psql
ตรง databasename.mysql เราอาจจะใส่ path ที่เรา save ไฟล์ไว้แต่แนะนำว่าเอาไฟล์ที่เรา save จาก mysql ไปวางไว้ที่เดียวกับ git repo ที่เรา clone มาน่าจะง่ายสุดแล้วจากนั้นเป็นอันเสร็จสิ้นได้ไฟล์ psql สำหรับ import เรียบร้อยพร้อม data ทั้งหมดที่เรา export มาด้วย
แต่!! เนื่องจาก lib ตัวนี้เค้าเขียนขึ้นมาเพื่อแปลง database ของเค้าเพื่อใช้กับ Django มันจะมี field พวก string text บางตัวที่เค้าจะทำ size * 2 เพื่อให้เหมาะกับปัญหา unicode size ที่เค้าเจอใน Django เพราะฉะนั้น import ไปแล้วก็อย่าลืมเช็ค data type กันดีๆด้วยนะ
สำหรับการ import DB เข้า postgre สามารถใช้คำสั่ง pg_dump ได้แบบนี้
pg_dump -s databasename < outputname.psql
แต่เราสามารถเปิดไฟล์ psql ที่ convert แล้ว copy text ทั้งหมดแล้วเอาไปรันใน GUI Client postgre ต่างๆได้เลยแต่ไม่แนะนำถ้า DB มีขนาดใหญ่มากอาจจะ time out ซะก่อน pg_dump น่าจะดีที่สุดจ้าาา