將 MySQL(MariaDB) 中的某個 database 轉換到 PostgreSQL

  • 實驗環境: Ubuntu 12.04 x64
  • MySQL version: MariaDB 10.0.16
  • PostgreSQL version: 9.1

實作步驟

  1. 架設 PostgreSQL

    sudo apt-get install postgresql postgresql-contrib
    
  2. 下載轉換程式
    Google 上隨便 search 都有一大堆 converter,但是有一些不能用。MySQL to PostgreSQL Converter 是目前實驗過一個很簡單又很好用的工具。

    git clone https://github.com/lanyrd/mysql-postgresql-converter.git
    
  3. 從 MySQL 中匯出 database

    cd /tmp
    mysqldump --compatible=postgresql --default-character-set=utf8 -u root dbname > dbname.sql
    
    • root, dbname, dbname.sql 請自行跟換
    • 切換到 /tmp 是為了等一下要讓 PostgreSQL user 讀取。因為我沒有特別設定 user 才需要這樣做。
  4. 轉換 database file

    python ~/mysql-postgresql-converter/dbconverter.py dbname.sql dbname.psql
    
  5. 匯入 database 到 PostgreSQL

    su - postgres
    cd /tmp
    psql -f dbname.psql
    

    基本上到這一步就可以算是完成這個主題了,但是別忘了 database 有 user 與權限設定。如果先前沒有設定,則繼續下一步。

  6. 設定 user
    一樣先 su - postgres 切換身分。然後直接在 bash shell 環境下,使用 createuser 這個指令來建立使用者

    createuser -P username
    

    輸入指令 psql 登入到 PostgreSQL 中並輸入 GRANT 語法修改使用者權限:

    GRANT all privileges on dbname.* to dbuser;
    

完成

Reference

Comments

comments powered by Disqus