2008-09-01 44 views
47

我在我的Linux文件系統上有一組Berkeley DB文件,我想檢查一下。從CLI檢查Berkeley DB文件

有什麼有用的工具可以快速瀏覽內容?我可以編寫使用BDB模塊檢查它們的Perl腳本,但是我正在尋找一些CLI實用程序,以便能夠在不必開始編寫腳本的情況下查看。

回答

23

查看db-utils包。如果你使用apt,您可以用下面的安裝:(你還是喜歡或apt-get install db4.8-util或任何版本)apt-get install db4.4-util

其他鏈接:

+4

如何理解db4.8_dump的輸出或來自該軟件包的任何內容的例子都很方便。輸出格式甚至沒有在轉儲手冊頁本身中描述,甚至沒有描述'bytevalue'格式或不管它是什麼.....爲了更漂亮的輸出而不需要找到和安裝包,請參閱答案使用Python,例如由trjh。 – nealmcb 2014-11-04 22:37:34

+2

我的包被`db-util`命名爲 – user123456 2016-11-04 14:13:55

6

db_hotbackup實用程序創建B的「熱備份」或「熱故障轉移」快照erkeley DB數據庫環境。具有以下

安裝它易於得到安裝DB-UTIL

然後運行下面的命令採取熱備份

db_hotbackup [-cDEguVv] [-d DATA_DIR ...] [ - h居住] [-l LOG_DIR] [-P密碼] -b BACKUP_DIR

5

一旦你已經安裝了DB utils的,你可以簡單的做數據庫文件db_dump

2

請注意,初始答案表示使用「db-utils」包,但示例顯示了正確的「db-util」包。 (沒有「s」)

8

正如其他答案中提到的,db-utils軟件包(RHEL下的db4-utils)有一些工具。但是,由於輸出是'bytevalue'格式,因此db_dump可能無用。

對於quick'n'dirty瀏覽器,使用Python:

[email protected]$ 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棄用。

12

我發現@ strickli的答案是最有幫助的,因爲我不想用數據庫添加任何新包到機器上。然而,數據庫文件我讀了類型B樹,沒有散的,所以我不得不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

使用在亞馬遜的Linux可以與安裝:

百勝安裝DB43-utils的

19

使用db_dump程序。它包含在包core/db(Arch),db-util(Debian,Ubuntu),sys-libs/db(Gentoo,請注意,這裏的二進制文件被稱爲db4.8_dump或您正在使用的任何版本)中。

在某些系統上沒有安裝手冊頁,在這種情況下,可以找到文檔here。默認情況下,db_dump會輸出一些十六進制數字,如果您試圖分析數據庫的內容,這並不是很有用。使用-p參數來改變它。

顯示一切的文件database.db在:

db_dump -l database.db 

只顯示文件中的數據庫mydb的內容:

db_dump -p database.db 

列表中的文件database.db在數據庫database.db

db_dump -p -s mydb database.db