0

大家好,我正在从数据库中检索数据并将其存储在文件中。我正在以 yaml 格式存储数据。

  require 'mysql2'
  require 'yaml'
  client = Mysql2::Client.new(:host => "localhost",:username => 'root' , :password => 'root' , :database => 'jgroup')
   results = client.query("SELECT * FROM jivegroup")
   File.open("D:/j.yml","w") do |file|
   results.each do |index|
   file.write(index.to_yaml);
   end
 end

   below is my file "j.yml"

    --- 
    groupID: 1000
    name: T1
    description: ""
    creationDate: 1209446456903
    modificationDate: 1378128624533
    --- 
    groupID: 1001
    name: T2
    description: 
    creationDate: 1209446473683
    modificationDate: 1378181717000
    --- 

但是当我尝试使用 YAML::load 加载上述文件时,它给出了我唯一的第一条记录。我想加载所有记录,请帮忙。下面是我读取 yml 文件的代码

    YAML::load( File.read('D:/jivegroup.yml') )
   {"groupID"=>1000, "name"=>"T1", "description"=>"", "creationDate"=>1209446456903, "modificationDate"=>1378128624533}
4

2 回答 2

0

如果您绝对想采用这种文件设计,请使用YAML::load_documents一次加载多个记录。

我建议改为使用文件中的列表。对我来说似乎更干净(因为您拥有的是类似记录的列表,而不是一组不相关的文档)。

于 2013-09-29T10:13:11.073 回答
0

嘿,终于找到了我自己关于堆栈溢出本身的问题的答案。我使用 YAML.load_stream(open("D:/jive_group.yml") 而不是 YAML::load( File.read('D:/jivegroup.yml') )

于 2013-09-30T06:16:34.383 回答