我在Linux文件系统上有一组Berkeley DB文件,我想查看它们的内容。
有哪些有用的工具可以快速概览这些文件的内容?我可以编写使用BDB模块来检查它们的Perl脚本,但我想要一些CLI实用程序来查看内部内容而不必开始编写脚本。
我在Linux文件系统上有一组Berkeley DB文件,我想查看它们的内容。
有哪些有用的工具可以快速概览这些文件的内容?我可以编写使用BDB模块来检查它们的Perl脚本,但我想要一些CLI实用程序来查看内部内容而不必开始编写脚本。
使用db_dump
程序。它包含在core/db
(Arch),db-util
(Debian,Ubuntu),sys-libs/db
(Gentoo)软件包中(请注意,这里的二进制文件名为db4.8_dump
或您正在使用的任何版本)。
在某些系统上,手册页面未安装,在这种情况下,可以在此处找到文档。默认情况下,db_dump
输出一些十六进制数字,如果您要分析数据库内容,则并不真正有用。使用-p
参数以更改此内容。
显示database.db
文件中的所有内容:
db_dump -p database.db
列出文件database.db
中的数据库:
db_dump -l database.db
仅显示文件database.db
中数据库mydb
的内容:
db_dump -p -s mydb database.db
请查看db-utils软件包。如果您使用apt,可以使用以下命令安装它:apt-get install db-util
(或者apt-get install db4.8-util
或您喜欢的任何版本)。
其他链接:
db-util
。 - user123456我发现@strickli的答案最有帮助,因为我不想在正在使用的数据库机器上添加任何新包。然而,我读取的数据库文件类型是btree,而不是hash,所以我必须使用bsddb。
# file foo.db
foo.db: Berkeley DB (Btree, version 9, native byte-order)
# python
>>> import bsddb
>>> for k, v in bsddb.btopen("*<db filename here...>*").iteritems():
... print k,v
...
正如其他答案中提到的那样,db-utils软件包(在RHEL下为db4-utils)具有一些工具。然而,db_dump可能不太有用,因为输出是“bytevalue”格式。
如果需要一个快速且简单的查看器,请使用Python:
me@machine$ python
Python 2.7.3 (default, Sep 26 2013, 20:03:06)
>>> import dbhash
>>> for k, v in dbhash.open( *<db filename here...>* ).iteritems(): print k, v
...
请注意,自Python 2.6起,dbhash已被弃用。
安装了db utils之后,您可以在数据库文件上简单执行 db_dump 操作。
db_hotbackup工具创建Berkeley DB数据库环境的"热备份"或"热故障转移"快照。使用以下命令安装:
apt-get install db-util
然后运行以下命令进行热备份:
db_hotbackup [-cDEguVv] [-d data_dir ...] [-h home] [-l log_dir] [-P password] -b backup_dir
from bsddb3 import db
import collections
d = db.DB()
d.open('./file.dat', 'dbname', db.DB_BTREE, db.DB_THREAD | db.DB_RDONLY)
d.keys()
collections.OrderedDict((k, d[k]) for k in d.keys())