当前位置:  开发笔记 > 开发工具 > 正文

将数据库表导出到YAML文件的最佳方法?

如何解决《将数据库表导出到YAML文件的最佳方法?》经验,为你挑选了4个好方法。

我的开发数据库中有一些数据,我想在我的测试环境中用作固定装置.Rails 2.x中将数据库表导出到YAML夹具的最佳方法是什么?



1> Andrew Vit..:

这有一个rake任务.如果需要,您可以指定RAILS_ENV; 默认是开发环境:

rake db:fixtures:dump
    # Create YAML test fixtures from data in an existing database.


看起来它是从ActiveRecord中提取的.你可以用这个插件添加它:http://github.com/topfunky/ar_fixtures然后运行:rake db:fixtures:dump MODEL = ModelName
db:fixtures:在Rails上转储?我没有在2.3.5上看到它.

2> Geekygecko..:

我一直在使用YamlDb来保存数据库的状态.

使用以下命令安装它:

script/plugin install git://github.com/adamwiggins/yaml_db.git 

使用rake任务将Rails数据库的内容转储到db/data.yml

rake db:data:dump

使用rake任务将db/data.yml的内容加载到数据库中

rake db:data:load

这是创作者主页:

http://blog.heroku.com/archives/2007/11/23/yamldb_for_databaseindependent_data_dumps/


当前维护的存储库现在位于http://github.com/ludicast/yaml_db

3> Brian Armstr..:

此插件将添加您想要的功能.它是从ActiveRecord中提取的,因此默认情况下不再出现.

script/plugin install http://github.com/topfunky/ar_fixtures

然后运行:

rake db:fixtures:dump MODEL=ModelName



4> jpgeek..:

对于Rails 3,如果要从数据库中转储yaml并将其用作fixture,我使用以下代码:

module DbToFixture

  TEMP_FIXTURE_PATH = Rails.root.join("test", "new_fixtures")

  def fixturize(model)
    Dir.mkdir(TEMP_FIXTURE_PATH) unless File.exists?(TEMP_FIXTURE_PATH)
    fname = model.table_name
    file_path = TEMP_FIXTURE_PATH.join(fname)
    File.open(file_path, 'w') do |f|
      model.all.each do |m|
        f.write(m.to_yaml)
      end
    end
  end

end

我只是从控制台运行它

require './lib/db_to_fixture'
include DbToFixture
fixturize ModelName

我无法让ar_fixtures与Rails 3一起工作(虽然没有尝试过很努力).Yaml db非常适合转储和保存数据库,但其格式与fixtures不兼容.

推荐阅读
手机用户2402852307
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有