レコードの取り出し方法は、すべてのデータからのBerkeley DB Ruby

StackOverflow https://stackoverflow.com/questions/577447

  •  05-09-2019
  •  | 
  •  

質問

いることができるすべてのキーと値に格納されBerkeley DBのRubyバインディングから http://github.com/mattbauer/bdb/tree/master でもなんなのかな進め方を詰めていきます。任意のポインタりますようお願い申し上げます。

更新

こちらは小さなスクリプトがループのキーと版画します。に基づくパックス'答え:

require 'rubygems'
require 'bdb'

env = Bdb::Env.new(0)
env.open('foo', Bdb::DB_CREATE,0)

db = env.db
db.open(nil, 'db1.db', nil, Bdb::Db::BTREE, Bdb::DB_CREATE,0)

db.put(nil, 'key',  'value',  0)
db.put(nil, 'key1', 'value1', 0)
db.put(nil, 'key2', 'value2', 0)

dbc = db.cursor(nil,0)
key,val = dbc.get(nil,nil,Bdb::DB_FIRST)
while key
  p key,val
  key,val = dbc.get(nil,nil,Bdb::DB_NEXT)
end
dbc.close
db.close(0)
env.close
役に立ちましたか?

解決

利用に必要なカーソルにBerkeley DBの走行を通じて全体のキー/値の空間です。

にBerkeley DBそのものをカーソルを利用で DB_FIRST 旗の後の複数の呼び出しの DB_NEXT フラグまでしっかりしており、キーと値のペアになっています。きの簡素化、コードのみを使用 DB_NEXT ていることを新規に作成したカーソルのものと同じを使用 DB_FIRST.

のRubyバインディングでは、これを実(基に 非常に 初歩的な知識のRuby-対応することができるでしょう清掃の手順はこちら):

dbc = db.cursor(nil,0)
key,val = dbc.get(nil,nil,Bdb::DB_FIRST)
while key != nil do
   # Process key and val as needed.
   key,val = dbc.get(nil,nil,Bdb::DB_NEXT)
   # or possibly .. (key,val,Bdb::DB_NEXT)
end
dbc.close()

他のヒント

この作品は私にとって:

require 'bdb'
db=BDB::Hash.open("test.db")
keyvalues=db.to_hash
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top