I have a set of Berkeley DB files on my Linux file system that I\'d like to examine.
What useful tools exist for getting a quick overview of the contents? I can writ
Under Amazon Linux you can install it with:
yum install db43-utils
I found @strickli's answer to be the most helpful, as I didn't want to add any new packages to the machine with the database I was on. However, the db file I was reading was of type btree, not hash, so I had to use 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
...
Once you have installed the db utils you can simple do a db_dump on the db file.
The db_hotbackup utility creates "hot backup" or "hot failover" snapshots of Berkeley DB database environments. Install it with the following
apt-get install db-util
then run following command to take hot backup
db_hotbackup [-cDEguVv] [-d data_dir ...] [-h home] [-l log_dir] [-P password] -b backup_dir
Use the db_dump
program. It is contained in the package core/db
(Arch), db-util
(Debian, Ubuntu), sys-libs/db
(Gentoo, note that here the binary is called db4.8_dump
or whatever version you are using).
On some systems the man pages are not installed, in that case the documentation can be found here. By default, db_dump
outputs some hex numbers, which is not really useful if you are trying to analyse the content of a database. Use the -p
argument to change this.
Show everything that’s in the file database.db
:
db_dump -p database.db
List the databases in the file database.db
:
db_dump -l database.db
Show only the content of the database mydb
in the file database.db
:
db_dump -p -s mydb database.db
As mentioned in the other answers, the db-utils package (db4-utils under RHEL) has some tools. However, db_dump can be unhelpful, since the output is 'bytevalue' format.
For a quick'n'dirty viewer, use 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
...
Note that dbhash is deprecated since python 2.6.