从 CLI 检查 Berkeley DB 文件

Examining Berkeley DB files from the CLI

提问人:mercutio 提问时间:9/1/2008 更新时间:2/24/2022 访问量:74016

问:

我的 Linux 文件系统上有一组 Berkeley DB 文件,我想检查一下。

有哪些有用的工具可以快速了解内容?我可以编写使用 BDB 模块来检查它们的 Perl 脚本,但我正在寻找一些 CLI 实用程序,以便能够在无需开始编写脚本的情况下查看内部。

linux 命令行界面 berkeley-db

评论


答:

27赞 David Crow 9/1/2008 #1

查看 db-utils 软件包。如果您使用 apt,您可以使用以下命令安装它:(或您拥有或喜欢的任何版本。apt-get install db-utilapt-get install db4.8-util

附加链接:

评论

6赞 nealmcb 11/5/2014
如何理解db4.8_dump或该包中任何内容的输出的示例将很方便。转储手册页本身甚至没有描述输出格式,甚至没有描述“字节值”格式或任何格式......对于无需查找和安装软件包的更漂亮的输出,请参阅使用 python 的答案,例如 trjh。
3赞 user123456 11/4/2016
我的包裹被命名为db-util
6赞 Ishtiaq Ahmed 2/20/2012 #2

db_hotbackup实用程序创建 Berkeley DB 数据库环境的“热备份”或“热故障转移”快照。使用以下命令进行安装Install it with the following

apt-get 安装 db-util

然后运行以下命令进行热备份

db_hotbackup [-cDEguVv] [-d data_dir ...][-h 首页] [-l log_dir][-P 密码] -b backup_dir

6赞 Gunnarsson 2/15/2013 #3

一旦你安装了 db utils,你就可以简单地对 db 文件进行db_dump

4赞 A.R. Pepper 3/21/2013 #4

请注意,最初的答案是使用“db-utils”包,但示例显示了正确的“db-util”包。(不带“s”)

10赞 strickli 11/6/2013 #5

正如其他答案中提到的,db-utils 包(RHEL 下的 db4-utils)有一些工具。但是,db_dump可能没有帮助,因为输出是“字节值”格式。

对于快速的肮脏查看器,请使用 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 已弃用。

16赞 trjh 4/12/2014 #6

我发现@strickli的答案是最有帮助的,因为我不想将任何新软件包添加到我所在的数据库的机器上。但是,我正在读取的 db 文件的类型是 btree,而不是哈希,所以我不得不使用 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
...
1赞 Dan Herman 4/28/2015 #7

在 Amazon Linux 下,您可以使用以下命令进行安装:

百胜餐饮集团安装 db43-utils

61赞 cdauth 12/20/2015 #8

使用该程序。它包含在软件包(Arch)、(Debian、Ubuntu)、(Gentoo,请注意,这里调用二进制文件或你使用的任何版本)中。db_dumpcore/dbdb-utilsys-libs/dbdb4.8_dump

在某些系统上,没有安装手册页,在这种情况下,可以在此处找到文档。默认情况下,输出一些十六进制数字,如果您尝试分析数据库的内容,这实际上没有用。使用参数来更改此设置。db_dump-p

显示文件数据库 .db 中的所有内容:

db_dump -p database.db

列出文件 database.db 中的数据库:

db_dump -l database.db

在文件 database.db 中仅显示数据库 mydb 的内容:

db_dump -p -s mydb database.db

评论

5赞 alexg 3/13/2016
应该是最佳答案
1赞 kenorb 2/24/2022 #9

蟒蛇 3

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())