我想从一个MySQL数据库的所有表的所有字段搜索一个给定的字符串,可能使用语法为:

SELECT * FROM * WHERE * LIKE '%stuff%'

有可能做这样的事情吗?


当前回答

您可以对数据库(及其数据)执行SQLDump,然后搜索该文件。

其他回答

如果您不是在代码级别上使用它,只是想检查信息,您可以将整个数据库导出为SQL,然后在文本编辑器上搜索。

您可以查看information_schema模式。它包含所有表和表中所有字段的列表。然后,您可以使用从该表中获得的信息运行查询。

涉及的表包括SCHEMATA、tables和COLUMNS。有一些外键,这样您就可以在模式中准确地构建表的创建方式。

我使用Union将查询串在一起。不知道这是不是最有效的方法,但确实有效。

SELECT * FROM table1 WHERE name LIKE '%Bob%' Union
SELCET * FROM table2 WHERE name LIKE '%Bob%';

使用实例在CLI下搜索数据库所有表中的字符串。

mysqldump -u UserName --no-create-info --extended-insert=FALSE DBName -p | grep -i "searchingString"

Or,

mysqldump -u UserName --no-create-info --extended-insert=FALSE DBName -p | grep -i "searchingString" > searchingString.sql

我不知道这是否只在最近的版本中,但右键单击Navigator窗格中的Tables选项会弹出一个名为Search Table Data的选项。这将打开一个搜索框,您可以在其中填写搜索字符串并点击搜索。

您确实需要在左侧窗格中选择要搜索的表。但如果你按住shift键一次选择10个表,MySql可以在几秒钟内处理并返回结果。

对于任何正在寻找更好选择的人!:)