直到几个月前我才开始使用应用程序。之后,决定该应用程序应进行重大改革。这涉及更改大量数据库架构。为了实现这一目标,我们选择在另一个分支机构工作。当我们不得不进行迁移时,我们并没有麻烦自己包含处理数据库中可用的当前数据的代码,以便它与新的db模式兼容。这种发展持续了几个月。现在,我们需要从旧数据库模式中获取所有数据并将其迁移到新的数据库模式中。
这样的任务似乎很复杂,无法征求意见。有没有可以帮助解决这个问题的宝石?感谢
答案 0 :(得分:0)
首先,我假设您正在使用像MySql这样的关系数据库,并且您有一些可管理的表格。
这是一个涉及离散步骤的简单方法:
对于每张桌子,
但是,使用此方法可能会导致数据验证错误。
第二种方法可以使用CSV。在这里,我假设你在Ruby 1.9.3中使用CSV。您可以将其切换为使用旧版Rubies的FasterCSV。
在rake任务中,您可以尝试手动映射某些数据:
# Put this in lib/tasks/import.rb
require 'csv'
namespace :import do
desc 'import some data!'
task :from_csv do
CSV.foreach('path/to/file.csv') do |row|
model = YourNewModel.new(field_xyz: row[xyz], ...)
# ... maybe do some other stuff here if you need to process anything
model.save if model.valid? # maybe check if it's valid
end
end
end
当然,您必须正确地将模型字段映射到CSV行。 Check out the 1.9.3 CSV docs here.
现在像这样运行rake任务:
$ cd /path/to/your/app && rake import:from_csv