如何将旧的PHP mysql数据迁移到新的Rails数据模型?

时间:2011-12-07 14:55:30

标签: mysql ruby-on-rails-3

我正在尝试将旧的PHP应用程序移植到Rails。我转储了旧的mysql表并将它们上传到运行新rails应用程序的服务器。将数据从旧的旧表迁移到新的Rails模型的最佳方法是什么?我可以编写一个PHP脚本来吐出ruby中的所有内容,然后使用它来填充seed.rb,但似乎应该有一种更简单的方法来实现它。

新应用程序是RoR 3.0.9,数据库仍然是mysql。

1 个答案:

答案 0 :(得分:9)

我会编写一个rake任务来连接旧表并将它们转储到新数据库。像这样:

# config/database.yml
legacy_db:
  adapter: mysql
  username: foo
  password: bar

# lib/tasks/import.rake
namespace :import do
  desc 'import the legacy db data'
  task :legacy => :environment do

    # connect to legacy db
    class OldDb < ActiveRecord::Base
      establish_connection :legacy_db
    end

    # define classes for legacy tables
    class OldUser < OldDb
      set_table_name 'user'
      set_primary_key 'user_id'
    end
    # ...do this for all your old tables

    # import from old models to new models
    OldUser.all.each do |u|
      User.create(
        :user_name  => u.login_name
        :created_at => Time.parse(u.account_opened_date)
        # etc....
      )
    end

  end
end

并致电:RAILS_ENV=production bundle exec rake import:legacy