สิ่งหนึ่งที่ค่อนข้างยุ่งยากสำหรับ database admin ก็คือการย้าย(Migrate) จากฐานข้อมูลหนึ่งไปยังอีกฐานข้อมูลหนึ่ง แต่จะยิ่งปวดหัวไปกว่านั้นก็คือถ้า database ทั้งสองอยู่บนโปรแกรม RDBMS ที่ต่างยี่ห้อกัน

     ข้อจำกัดจากความต่างๆและสถาปัตยกรรมของโปรแกรมที่ต่างกัน รวมไปถึงฟีเจอร์และแนวคิดในการจัดการข้อมูลเชิงพื้นที่ในฐานข้อมูลทำให้การย้ายฐานข้อมูลแบบนี้เป็นเรื่องที่ยาก หลายค้นยอมเสียเวลาใช้วิธีการ ส่งออกข้อมูลมาเป็นไบนารีไฟล์อย่าง Dbf และค่อยนำไป import เข้ากับฐานข้อมูลปลายทาง ซึ่งแน่นอนว่าถ้าข้อมูลเยอะๆก็ต้องใช้เวลานาน วันนี้ผมมีเทคนิคดีๆมาแนะนำครับ นั้นคือการใช้ OGR ในการ migrate ฐานข้อมูลจาก Mysql ไปยัง postgresql โดยเขียนคำสั่งง่ายๆดังนี้ครับ

ogr2ogr -overwrite -update -f “PostgreSQL” PG:”host=pghost user=pgloginname dbname=pgdbname password=pgpassword”
MYSQL:”mydb,host=myhost,user=mylogin,password=mypassword,port=3306″
-lco OVERWRITE=yes -lco SCHEMA=mysqldump building population

ตัวอย่างเป็นการส่งออกข้อมูล อาคาร(building) และ ข้อมูลประชากร(population) จาก mysqldump schema ไปยัง postgresql กรณีที่ต้องการย้ายทุกตารางก็สามารถใช้คำสั่งได้ดังนี้ครับ

ogr2ogr -overwrite -update -f “PostgreSQL” PG:”host=pghost user=pgloginname dbname=pgdbname password=pgpassword”
MYSQL:”mydb,host=myhost,user=mylogin,password=mypassword,port=3306″