数据库 在现有数据库上进行一个 rails 新项目

karaschee · 2014年10月31日 · 最后由 huobazi 回复于 2014年11月01日 · 2460 次阅读

最近有一个公司项目,想用 rails 来搭,但是以前是别人用 django 写的,数据库也是按照 django 的约定生成的。 现在的问题是,原数据库的东西不是全部都要,而且表的结构也要大改,怎么把原数据迁移到这个 rails 新项目呢?

我目前的想法是: 用 rails migration 按需求建立好表结构,写一组 sql 语句保存为.sql 格式,然后再 mysql 控制台直接进行 source 导入,把原数据库里需要的数据导入到新的数据库中。

因为 rails 和数据库方面的我都是新手,这样做感觉有些草率,而且要直接在生产环境操作数据库,心里没底。 有更好的方法么?感谢各位。

不对不对。

首先 production server 别乱动。

然后数据库 dump 一份来本地,写一个 rake task 做数据 migration。

等部署的时候,rake task 在线上做数据 migration,从原始数据库读取,然后写入新数据库里,相当于是数据同步。

#1 楼 @msg7086 感谢。还不怎么会用 migration 写对应的 sql 语句,回去试试。

数据 migration 直接用 SQL 什么的应该就行了。发个我自己项目的片段吧,仅供参考。

namespace :kanako do
  database = ENV['db'] || 'test'
  include ActiveRecord
  task :default => [:team]

  task :db => :environment do
    Base.establish_connection
  end

  task :team => :db do
    Team.create Base.connection.select_rows("SELECT league_id, name FROM #{database}.gz_league").map{ |row| { :id => row[0], :name => row[1] } }
  end
end

#3 楼 @msg7086 太好了!如有问题再来请教!

没有有经验的开发者, (不知道有没有充分的调研),就这么把一个成熟的应用随意转换框架和语言,感觉有些儿戏。

#5 楼 @billy 我也觉得。据说淘宝改 java 是业务支撑不下去,不知道这里是为什么?很多东西能跑,不容易出错就阿弥陀佛啦。

当新项目做,做完测试完全没有问题了,把生产环境数据按照业务关系导入到新系统内,再测试,没有问题了,重新导入生产数据库数据,最好是新旧系统同时运行一段时间,没有问题,再停掉旧系统

不管你打算怎样做,请做好数据库备份~

judi0713 数据库已经有了,如何重写成 Rails 应用 提及了此话题。 03月21日 09:12
karaschee 关闭了讨论。 01月22日 20:32
需要 登录 后方可回复, 如果你还没有账号请 注册新账号