Rails 4.将旧的数据库中的(部分)遗留数据库数据迁移到rails现有数据库

时间:2014-10-09 11:28:22

标签: mysql sql ruby-on-rails dump legacy

我有一项任务是将旧数据从旧数据库导入新的Rails应用程序。旧程序是在Delphi中创建的,已经过时,所以客户决定创建rails应用程序来替换它。我有转储文件,我现在正在创建本地MySQL数据库并插入最近8年的数据(mysql已经工作了一个多小时):))

现在我不确定应该导入旧数据的方式。问题是旧的db表和列的名称与我在App中的名称不同,并且有许多未使用和不需要的列/表。所以我需要只选择其中一些并插入App DB。你能否为这个案例提出最佳解决方案?

提前谢谢!

1 个答案:

答案 0 :(得分:1)

您可以将旧数据库调整为rails应用程序并使用它

让我们假设您的旧数据库包含以下表格old_posts

old_posts
________________________________________
sysid | name         | description      |
_______________________________________
      |              |                  |
1     | The best post| Some description |
_______________________________________
      |              |                  |
2     | Another  post| Another descrip  |
________________________________________

在rails中,您可以定义table_name doc:

中的更多信息

http://api.rubyonrails.org/classes/ActiveRecord/ModelSchema/ClassMethods.html#method-i-table_name

您还可以使用alias_attribute重新定义属性 doc中的更多信息: http://api.rubyonrails.org/classes/Module.html#method-i-alias_attribute

更改主键primary_key doc中的更多信息: http://api.rubyonrails.org/classes/ActiveRecord/AttributeMethods/PrimaryKey/ClassMethods.html#method-i-primary_key-3D

示例似乎是

class Post < ActiveRecord::Base
  self.primary_key = 'sysid'
  self.table_name  = 'old_posts`

  alias_attribute :name, :title
  alias_attribute :description, :content
end

然后你可以调用:

p = Post.find(1)
p.title #= >  The best post

您也可以从rails app数据库中单独使用旧数据库

http://ilikestuffblog.com/2012/09/21/establishing-a-connection-to-a-non-default-database-in-rails-3-2-2/