不得不快速拍打一些东西,将一张桌子(大约30万条记录)从一个数据库移动到另一个不同名称的数据库。
使用RoR的我的黑客解决方案是:
for old_line in SaleItemsOld.where(:sale_id => old_sale.id)
line = LineItems.new
line.sale_id = new_sale.id
...
line.save
end
我认为应该通过在一个字符串中将所有这些新行构建为SQL查询然后一次性执行来加速这一点。
对此有更好的Rails解决方案吗?
答案 0 :(得分:0)
通常,您可以通过迁移和一些精心构建的SQL来执行此类操作。一般来说,这个想法是按照以下方式做的:
INSERT INTO line_items (sale_id) SELECT id FROM sale_items_old
您可以根据需要向插入列表和选择规范添加其他值。
在迁移中,您可以通过将其置于up
方法中来运行任意SQL:
def self.up
execute("...")
end