是否有一个库或开源实用程序可以搜索Sqlite数据库的所有表和列?唯一的输入是Sqlite DB文件的名称。
我正在尝试编写一款取证工具,并希望在SQLite文件中搜索特定字符串。
只需转储数据库并搜索它。
% sqlite3 文件名 .dump | grep '我的搜索字符串'
您可以使用管道符号将结果传递给 less 命令,然后使用 / 来搜索:
% sqlite3 文件名 .dump | less
"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])
sqlite3.Row
行工厂。这使得 cursor
返回类似字典的行。行键是列名。 - unutbu我知道这个问题有点晚了,但我遇到了类似的问题,因为它发生在 Docker 镜像中,我无法访问 Python,所以我是这样解决的:
for X in $(sqlite3 database.db .tables) ; do sqlite3 database.db "SELECT * FROM $X;" | grep >/dev/null 'STRING I WANT' && echo $X; done
@MrWorf的回答对我的sqlite文件(来自Evernote的.exb文件)没有用,但是这种类似的方法可以解决:
sqlitebrowser mynotes.exb
grep '我想要的文本' mynotes.exb.sql