现在团队的做法是,用 Excel 编辑大量程序初期所需基础数据,然后写宏转换成 SQL 的 insert 语句并生成相关文件,再用还原的方式导入到数据库中。 有没有更好的办法?
seed_fu 这个 gem 可以导入,但编辑起数据还不是太方便。
seed_fu 支持简化语法,还算可以吧:
User.seed(:id, { :id => 1, :login => "jon", :email => "[email protected]", :name => "Jon" }, { :id => 2, :login => "emily", :email => "[email protected]", :name => "Emily" } )
如果还嫌麻烦,seed_fu 也支持 cvs 导入 https://github.com/mbleigh/seed-fu/blob/master/lib/seed-fu/writer.rb
用 Excel 写宏那 Ruby 白学了。
Excel 存为 CSV 然后导入不就行了么。
其实编辑最好是用 yml, 比 csv 简单且直观。
数据量小的可以写到 db/seeds.rb 数据量大的可以写一个 rake 任务来读 excel,然后保存到数据库中
我一般是用 yml 或者 csv 来存,然后在 seed 里面读
#1 楼 @winnie 谢谢你提供的链接 也谢谢其他人的回答,果然做法有问题。
seed_fu
我用 fixture,好处是 test 和 development 的数据可以用同一套,而且 test 跑的速度很快,缺点是维护起来稍麻烦。
rake db:fixtures:load FIXTURES_PATH='spec/fixtures' RAILS_ENV=development
#7 楼 @ericguo 这样是维护麻烦,比较大的项目,比较多的基础数据就不是好办法了。
用 rake 来维护,脚本里面可以直接读取导入 csv,xml,json,yml 什么的...顺便带点逻辑处理和错误数据修复。
#8 楼 @newbie 其实也难说,看情况吧。
听过叫做 yaml_db 的 gem,不过貌似不维护了