Изучение файлов Беркли БД из CLI - PullRequest
51 голосов
/ 01 сентября 2008

У меня есть набор файлов Berkeley DB в моей файловой системе Linux, которые я хотел бы изучить.

Какие полезные инструменты существуют для быстрого обзора содержимого? Я могу писать Perl-скрипты, которые используют модули BDB для их изучения, но я ищу какую-нибудь утилиту CLI, чтобы можно было заглянуть внутрь, не начав писать скрипты.

Ответы [ 8 ]

29 голосов
/ 20 декабря 2015

Используйте программу 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

Показывать только содержимое базы данных mydb в файле database.db:

db_dump -p -s mydb database.db
23 голосов
/ 01 сентября 2008

Проверьте пакет db-utils . Если вы используете apt, вы можете установить его со следующим: apt-get install db4.4-util (или apt-get install db4.8-util или любой другой версией, которую вы предпочитаете.)

Дополнительные ссылки:

14 голосов
/ 11 апреля 2014

Я нашел ответ @ strickli наиболее полезным, поскольку я не хотел добавлять какие-либо новые пакеты на компьютер с базой данных, на которой я работал. Однако файл БД, который я читал, имел тип 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
...
9 голосов
/ 05 ноября 2013

Как упоминалось в других ответах, в пакете db-utils (db4-utils под RHEL) есть несколько инструментов. Однако 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
...

Обратите внимание, что dbhash устарела с python 2.6.

6 голосов
/ 20 февраля 2012

Утилита db_hotbackup создает моментальные снимки «горячего резервного копирования» или «горячего переключения при отказе» сред баз данных Berkeley DB. Установите его со следующим

apt-get install db-util

затем выполните следующую команду, чтобы получить горячее резервное копирование

db_hotbackup [-cDEguVv] [-d data_dir ...] [-h home] [-l log_dir] [-P пароль] -b backup_dir

5 голосов
/ 15 февраля 2013

После установки утилит db вы можете просто сделать db_dump в файле db.

3 голосов
/ 21 марта 2013

Обратите внимание, что первоначальный ответ говорит об использовании пакета "db-utils", но в примере показан правильный пакет "db-util". (без "s")

2 голосов
/ 27 апреля 2015

Под Amazon Linux вы можете установить его с:

yum install db43-utils

...