2010-05-17 93 views
0

缺少SQL将我的整个数据库转储到文本并搜索,有没有办法在MySQL数据库的所有表中搜索特定的子字符串,如果您不确定哪个表/记录/字段实际发生的子字符串?在特定子字符串中搜索所有表

回答

1

一些想法:

你可以使用一些外部的全文检索功能,如http://www.sphinxsearch.com/

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

仅仅搜索数据文件本身就是讨厌和肮脏的,但这可能大部分都是有效的。 YMMV达到极限!

您可能会想出算法来标识所有表中的所有文本列,然后如OMG指出的那样为这些列编写一些查询。

我可能会搜索二进制日志(假设你有他们,当然)。当我正在研究某些数据库的怪异情况时,我在日志中搜索了一些可能对于环境来说是唯一的子字符串,然后我可以将所讨论的确切语句归入其中。

2

转储到文本文件和搜索将是最快速的&最简单的方法。

另一种方法是,您必须使用动态SQL(MySQL的Prepared Statements),因为您无法迭代要在标准SQL中进行查询的表列表。另外,并不是所有的列都是基于VARCHAR /字符串的 - 所以这些需要在尝试LIKE %your_substring%/etc之前被过滤掉。