在所有表中搜索特定子字符串

时间:2010-05-17 23:32:35

标签: mysql sql substring

如果您不确定哪个表/记录/字段实际发生了哪个表/记录/字段,那么有没有办法在MySQL数据库的所有表中搜索特定的子字符串?

2 个答案:

答案 0 :(得分:2)

转储到文本文件并搜索将是最快的&最简单的手段。

另一种方法是你必须使用动态SQL(MySQL的Prepared Statements),因为你不能迭代一个表列表来在标准SQL中查询。此外,并非所有列都基于VARCHAR /字符串 - 因此需要在尝试LIKE %your_substring% / etc之前将其过滤掉。

答案 1 :(得分:1)

一些想法:

您可以使用某些外部全文搜索功能,例如http://www.sphinxsearch.com/

搜索二进制日志。如果使用基于语句的日志记录,那应该非常简单。

仅仅搜索数据文件本身就是令人讨厌和肮脏的,但这可能在很大程度上起作用。 YMMV极端程度!

你可能想出了识别所有表中所有文本列的算法,然后,正如OMG指出的那样,为这些列写一些查询。

我可能会搜索二进制日志(当然,假设你有它们)。当我研究一些数据库怪异时,我在我们的日志中搜索一些可能对环境来说唯一的子字符串,然后我可以查看有问题的确切语句。