少於 1 分鐘閱讀

Yaml_db

將 db 資料轉成 yaml 備份、還原

主要的指令如下

rake db:data:dump   ->   匯出到 db/data.yml
rake db:data:load   ->   從 db/data.yml 還原到db

使用方式

情境:將 sqlite 轉到 mysql

專案做到一半才想起來,忘記用 mysql 了,想把 sqlite 裡面的資料無痛轉移到 mysql 去

  1. 安裝 yaml_db
    gem 'yaml_db'
    

    並執行 bundle install

  2. 將 db 匯出
rake db:data:dump   # 匯出到 db/data.yml
  1. 更改 database gemfile
    # gem 'sqlite3'
    gem 'mysql2'
    

    bundle

database.yml

default: &default
  adapter: mysql2
  encoding: utf8
  pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
  username: root
  password: 
  socket: /tmp/mysql.sock
development:
  <<: *default
  database: xxx_development
test:
  <<: *default
  database: xxx_test
production:
  <<: *default
  database: xxx_production
  username: xxx
  password: <%= ENV['XXX_DATABASE_PASSWORD'] %>
  1. 建立 db
rake db:create
rake db:schema:load
  1. 還原 db
    rake db:data:load
    

類似解決方案

  1. seed_dump - 將 db 資料轉成 seed (object的指令)
  2. backup 強大的線上的備份方案

參考

  1. https://github.com/yamldb/yaml_db
  2. https://stackoverflow.com/questions/1670154/convert-a-ruby-on-rails-app-from-sqlite-to-mysql

更新時間:

留言