【发布时间】:2011-08-07 17:11:00
【问题描述】:
如何从一个数据库(开发、sqlite)中转储一个用户及其所有关联(cmets、帖子等)以将其插入另一个数据库(生产、mysql)。
我应该将它转储到 yaml 还是 sql 或其他东西?
【问题讨论】:
标签: mysql ruby-on-rails ruby sqlite dump
如何从一个数据库(开发、sqlite)中转储一个用户及其所有关联(cmets、帖子等)以将其插入另一个数据库(生产、mysql)。
我应该将它转储到 yaml 还是 sql 或其他东西?
【问题讨论】:
标签: mysql ruby-on-rails ruby sqlite dump
好的。
God Save the YAML
我已经使用 YAML 从开发中转储到文件中并将其加载到我的生产中。由于它是 auto_increment,所以有 id 的 hack,它已经改变了。
开发
user = User.find X
posts = user.posts
comments = user.comments
...
File.open("user.yml", "w") { |f| f << YAML::dump(user) }
File.open("comments.yml", "w"){ |f| f << YAML::dump(comments) }
File.open("posts.yml", "w") { |f| f << YAML::dump(posts) }
...
生产
user = YAML::load_file("user.yml")
posts = YAML::load_file("posts.yml")
comments = YAML::load_file("comments.yml")
new_user = user.clone.save # we should clone our object, because it isn't exist
posts.each do |p|
post = p.clone
post.user = new_user
post.save
end
...
【讨论】:
user.dup.save
post = p.dup
你可以使用这个 gem:https://github.com/ludicast/yaml_db
YamlDb 是独立于数据库的 转储和恢复数据的格式。 它补充了 独立于数据库的模式格式 在 db/schema.rb 中找到。数据是 保存到 db/data.yml 中。
【讨论】: