如何将 .yml 文件中的数据加载到数据库?
有一个表 questions
和一个数据文件 questions.yml
。假设没有“问题”模型。
“questions.yml”有一些来自表的重新编码转储。
---
questions_001:
title: ttt1
content: ccc1
questions_002:
title: ttt2
content: ccc2
我想从 yml 文件加载数据,将它们插入数据库。但我不能使用 rake db:fixtures:load ,因为它会将内容视为“erb”模板,这不是我想要的
所以我想编写另一个 rake 任务来加载手动数据。
我可以通过以下方式读取记录:
File.open("#{RAILS_ROOT}/db/fixtures/#{table_name}.yml", 'r') do |file|
YAML::load(file).each do |record|
# how to insert the record??
end
end
但我不知道如何插入它们。
编辑:
我已经尝试过:
Class.new(ActiveRecord::Base).create(record)
但是
class Dummy < ActiveRecord::Base {}
Dummy.create(rcord)
没有任何内容插入到数据库中
There is a table questions
, and a data file questions.yml
. Assume there is no 'Question' model.
'questions.yml' has some recodes dump from the table.
---
questions_001:
title: ttt1
content: ccc1
questions_002:
title: ttt2
content: ccc2
I want to load the data from the yml file, insert them to database. But I can't use rake db:fixtures:load
, because it will treat the content as 'erb' template, which is not want I want
So I want to write another rake task, to load the data manually.
I can read the records by:
File.open("#{RAILS_ROOT}/db/fixtures/#{table_name}.yml", 'r') do |file|
YAML::load(file).each do |record|
# how to insert the record??
end
end
But I don't know how to insert them.
Edit:
I have tried:
Class.new(ActiveRecord::Base).create(record)
and
class Dummy < ActiveRecord::Base {}
Dummy.create(rcord)
But nothing inserted to database
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
将日期从 yml 文件加载到
records
后尝试此操作:您可以简单地创建一个仅用于导入的模型。您不需要创建
app/models/question.rb
。只需在负责导入的脚本中编写上面的代码即可。更新:
您可以使用以下功能:
来源
使用直接连接您可以使用以下命令:
Try this after loading the date from the yml file to
records
:You can simply create a model just for importing. You don't need to create the
app/models/question.rb
. Just write the code above in the script responsible for the importing.UPDATE:
You can use the following function:
source
To use the connection directly you can use the following:
感谢 @jigfox 的回答,它得以正常工作。现在必须对 Rails 4 的完整实现进行一些修改。
Got it working thanks to @jigfox 's answer. Had to modify a bit for the full implementation now with Rails 4.
这会将夹具加载到当前的 RAILS_ENV 中,默认情况下,该环境是开发环境。
This loads fixtures into the current RAILS_ENV, which, by default, is development.