在我的rails应用程序中,我有一个seed.rb脚本,可以插入大量记录。事实上,我正在尝试加载1600万个。这需要很长时间。
我想尝试加快这一点的一件事是删除表索引并在之后重新添加。如果听起来我正在做一些疯狂的事情,请告诉我,但这似乎是一个recommendation for bulk loading into postgres
我在迁移中使用add_index和remove_index命令,但相同的语法在seeds.rb文件中不起作用。事实上,迁移之外是否可以这样做? (我想象它可能不是最佳实践,因为它代表了架构更改)
rails v2.3.8, postgres v8.4.8
答案 0 :(得分:3)
一种可能性就是在seeds.rb中沉迷于一点原始SQL。
ActiveRecord::Base.connection.execute("DROP INDEX myindex ON mytable")
在1600万条记录中,我建议通过原始SQL管理整个事情(如果你愿意,可以包含在seeds.rb中)。所有1600万条记录都放在一张桌子上吗?应该有一些PostgreSQL魔法将文件(以PostgreSQL特定格式)批量导入表中。