我有大约100万张图像一次放入数据集10000中。
我确定map_size与此article
的引用有误使用此行创建集合
LogController lc;
const char * my_fmt = "Some data %'d";
lc.insertLogEntry( my_fmt, int_value );
每10000个样本使用此行将数据写入文件,其中X和Y是放置在LMDB中的数据的占位符。
env = lmdb.open(Path+'mylmdb', map_size=int(1e12)
如何编辑此代码,以便将新数据添加到此LMDB而不替换,因为此方法将其替换为相同位置。 我用env.stat()检查了生成后的长度。
答案 0 :(得分:4)
让我扩展上面的评论。
LMDB中的所有条目都是根据唯一键存储的,并且您的数据库已包含i = 0, 1, 2, ...
的键。您需要一种方法来查找每个i
的唯一键。最简单的方法是找到现有数据库中最大的密钥并继续添加它。
假设现有密钥是连续的,
max_key = env.stat()["entries"]
否则,更彻底的方法是迭代所有键。 (Check this.)
max_key = 0
for key, value in env.cursor():
max_key = max(max_key, key)
最后,只需替换for
循环的第7行,
str_id = '{:08}'.format(i)
通过
str_id = '{:08}'.format(max_key + 1 + i)
附加到现有数据库。