2012-11-22 43 views
4

是否有庫或開源實用工具可用於搜索Sqlite數據庫的所有表和列?唯一的輸入將是sqlite數據庫文件的名稱。搜索Sqlite數據庫 - 所有表和列

我想寫一個取證工具,並希望搜索特定字符串的sqlite文件。

回答

6

您可以使用"SELECT name FROM sqlite_master WHERE type='table'" 找出數據庫中表的名稱。從那裏很容易選擇每個表的所有行。

例如:

import sqlite3 
import os 

filename = ... 
with sqlite3.connect(filename) as conn: 
    conn.row_factory = sqlite3.Row 
    cursor = conn.cursor()  
    cursor.execute("SELECT name FROM sqlite_master WHERE type='table'") 
    for tablerow in cursor.fetchall(): 
     table = tablerow[0] 
     cursor.execute("SELECT * FROM {t}".format(t = table)) 
     for row in cursor: 
      for field in row.keys(): 
       print(table, field, row[field]) 
+0

太棒了!我只是有一個額外的問題---可以說我在表中搜索一個字符串「sms」,一旦找到 - 我如何在上面的代碼片段中打印列名+表名? –

+0

我已經更改了代碼以使用'sqlite3.Row'行工廠。這使得'cursor'返回類似於dict的行。行鍵是列名稱。 – unutbu

+0

非常感謝我的朋友! –

相關問題