如何从一个数据库(开发,sqlite)转储一个用户及其所有关联(注释,帖子等)以将其插入另一个(生产,mysql)。
我应该将它转储到yaml或sql或其他东西吗?
答案 0 :(得分:14)
确定。
God Save the YAML
我已经在开发中使用YAML转储到文件中并在生产中加载它。由于它是auto_increament,因此已经改变,因为它是auto_increament。
发展
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
...
答案 1 :(得分:2)
您可以使用此gem:https://github.com/ludicast/yaml_db
YamlDb是一个独立于数据库的 转储和恢复数据的格式。 它补充了 与数据库无关的架构格式 在db / schema.rb中找到。数据是 保存到db / data.yml。