【发布时间】:2022-09-27 17:04:01
【问题描述】:
我正在尝试遍历 NEAR 的 RocksDB, 我已经从 s3 下载了小备份,并使用下面的代码迭代 col33(事务) 但它不会打印任何东西,因为 RocksDB 会是空的(但不是很明显), 你能指出我做错了什么吗? 谢谢
use std::env;
use rocksdb::{ColumnFamilyDescriptor, DB, IteratorMode, Options};
fn col_name(col: i32) -> String {
format!(\"col{}\", col)
}
fn main() {
println!(\"Hello, RocksDB!\");
let args: Vec<String> = env::args().collect();
let path = if args.len() > 1 {
args.get(1).unwrap().clone()
} else {
String::from(\"./data\")
};
println!(\"data dir={}\", &path);
let opts = Options::default();
let mut cfs:Vec<ColumnFamilyDescriptor> = Vec::new();
for col in 33..34 {
cfs.push(
rocksdb::ColumnFamilyDescriptor::new(col_name(col),opts.clone()));
}
let db = DB::open_cf_descriptors_read_only(
&opts,&path, cfs, false,
).unwrap();
let iter = db.iterator(IteratorMode::Start);
for (key, value) in iter {
println!(\"Saw {:?} {:?}\", key, value);
let k = String::from_utf8(key.to_vec()).unwrap();
let v = String::from_utf8(value.to_vec()).unwrap();
println!(\"Saw {:?} {:?}\", k, v);
}
let _ = DB::destroy(&Options::default(), &path);
}
-
哦,好的,谢谢!但是,尽管如此,我希望至少能看到原始字节,但它什么也没读。
-
数据位于哪个列族中?迭代超过了可能为空的默认列族
-
循环遍历每个列族并对每个列族进行迭代
-
是的,我使用了错误的迭代器,非常感谢!
标签: nearprotocol