现在我正在更新Rails应用程序,数据库存在一些问题。它也正在从MySQL转换为PostgreSQL。
有3列用于跟踪一个时间值。设施在星期一开放的时间记录为monday_open_hour
,monday_open_minute
,monday_open_ampm
。我想将这些合并到一个时间字段中。
还有几个字段仅用于3000多条记录中的1%,因此我想将它们分解为单独的表格。
最好的方法是什么?我想它可能在SQL中使用某种存储过程/游标完成。有没有办法用Ruby / Rails做到这一点?
答案 0 :(得分:1)
处理增量数据库更改的Rails方法是使用 migrations 。迁移允许您以有序的方式对模式或数据库内容应用增量更改,即使您正在与团队协作也是如此。有很好的帮助程序可以完成常见的任务,例如创建和删除表,重命名列,以及类似的简单事项,但是如果需要,可以使用任意SQL(但请注意,这很可能会将您绑定到当前数据库,并使进一步的行动变得更加困难)。
基本上,您可以使用rails generate migration ConsolidateDateColumns
生成新的迁移(例如)。这将在db/migrate
目录中为您创建一个模板;请参阅Rails Guides entry开始编写它们。当您准备好应用它时,请运行rake db:migrate
。
这样做的好处是,它可以让您轻松地将相同的更改应用到不同的环境(开发,测试,生产,升级或整个开发团队)并保持同步,并鼓励您保持同步尽可能的事情是可逆的,所以如果你需要,你可以保持一定程度的自由来回移动。
还有一件事:听起来你会在快速连续中做很多重大改变。确保在开始之前备份原始数据库,并在针对真实事物运行它之前,在单独的环境中针对简化的测试集彻底测试您的工作!