0

こんにちは、データベースからデータを取得して File.i に保存しています。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( File.read('D:/jivegroup.yml') ) の代わりに YAML.load_stream(open("D:/jive_group.yml") を使用しました

于 2013-09-30T06:16:34.383 に答える